[INFO] cloning repository https://github.com/christopher-kapic/ralph-rs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/christopher-kapic/ralph-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fchristopher-kapic%2Fralph-rs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fchristopher-kapic%2Fralph-rs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 9dcb9711b2ce9591248124cbd00e372ff4394013
[INFO] testing christopher-kapic/ralph-rs against master#cced03bfd61a304243a34504618ecec86c17063f for pr-154065-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fchristopher-kapic%2Fralph-rs" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/christopher-kapic/ralph-rs
[INFO] finished tweaking git repo https://github.com/christopher-kapic/ralph-rs
[INFO] tweaked toml for git repo https://github.com/christopher-kapic/ralph-rs written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/christopher-kapic/ralph-rs on toolchain cced03bfd61a304243a34504618ecec86c17063f
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/christopher-kapic/ralph-rs already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded wasm-bindgen-shared v0.2.120
[INFO] [stderr]   Downloaded wasm-bindgen v0.2.120
[INFO] [stderr]   Downloaded instability v0.3.12
[INFO] [stderr]   Downloaded phf_shared v0.12.1
[INFO] [stderr]   Downloaded line-clipping v0.3.7
[INFO] [stderr]   Downloaded wasm-bindgen-macro v0.2.120
[INFO] [stderr]   Downloaded js-sys v0.3.97
[INFO] [stderr]   Downloaded kasuari v0.4.12
[INFO] [stderr]   Downloaded phf v0.12.1
[INFO] [stderr]   Downloaded clap_complete v4.6.3
[INFO] [stderr]   Downloaded wasm-bindgen-macro-support v0.2.120
[INFO] [stderr]   Downloaded cc v1.2.61
[INFO] [stderr]   Downloaded chrono-tz v0.10.4
[INFO] [stderr]   Downloaded tokio v1.52.2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] cbab2cf158a96cd3245ec5763eed80973a824d8ff691909ec0401f2603dcb01f
[INFO] running `Command { std: "docker" "start" "-a" "cbab2cf158a96cd3245ec5763eed80973a824d8ff691909ec0401f2603dcb01f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "cbab2cf158a96cd3245ec5763eed80973a824d8ff691909ec0401f2603dcb01f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "cbab2cf158a96cd3245ec5763eed80973a824d8ff691909ec0401f2603dcb01f", kill_on_drop: false }`
[INFO] [stdout] cbab2cf158a96cd3245ec5763eed80973a824d8ff691909ec0401f2603dcb01f
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] fb2adb6b7051f713340e0152202c01b291cd672e68581b6c2e9d50e415a72891
[INFO] running `Command { std: "docker" "start" "-a" "fb2adb6b7051f713340e0152202c01b291cd672e68581b6c2e9d50e415a72891", kill_on_drop: false }`
[INFO] [stderr]    Compiling bitflags v2.11.1
[INFO] [stderr]    Compiling foldhash v0.2.0
[INFO] [stderr]    Compiling allocator-api2 v0.2.21
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling castaway v0.2.4
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling unicode-width v0.2.2
[INFO] [stderr]    Compiling instability v0.3.12
[INFO] [stderr]    Compiling indoc v2.0.7
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling static_assertions v1.1.0
[INFO] [stderr]    Compiling compact_str v0.9.0
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]    Compiling powerfmt v0.2.0
[INFO] [stderr]    Compiling cc v1.2.61
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling deranged v0.5.8
[INFO] [stderr]    Compiling lru v0.16.4
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling num_threads v0.1.7
[INFO] [stderr]    Compiling num-conv v0.2.1
[INFO] [stderr]    Compiling litrs v1.0.0
[INFO] [stderr]    Compiling time-core v0.1.8
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling line-clipping v0.3.7
[INFO] [stderr]    Compiling unicode-truncate v2.0.1
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]    Compiling siphasher v1.0.3
[INFO] [stderr]    Compiling time v0.3.47
[INFO] [stderr]    Compiling libsqlite3-sys v0.37.0
[INFO] [stderr]    Compiling phf_shared v0.12.1
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling chrono-tz v0.10.4
[INFO] [stderr]    Compiling dirs-sys v0.5.0
[INFO] [stderr]    Compiling phf v0.12.1
[INFO] [stderr]    Compiling hashlink v0.11.0
[INFO] [stderr]    Compiling fallible-streaming-iterator v0.1.9
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling fallible-iterator v0.3.0
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling dirs v6.0.0
[INFO] [stderr]    Compiling uuid v1.23.1
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling strum_macros v0.27.2
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling kasuari v0.4.12
[INFO] [stderr]    Compiling tokio v1.52.2
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling clap v4.6.1
[INFO] [stderr]    Compiling clap_complete v4.6.3
[INFO] [stderr]    Compiling strum v0.27.2
[INFO] [stderr]    Compiling ratatui-core v0.1.0
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling ratatui-widgets v0.3.0
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.0
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling ratatui-macros v0.7.0
[INFO] [stderr]    Compiling ratatui v0.30.0
[INFO] [stderr]    Compiling rusqlite v0.39.0
[INFO] [stderr]    Compiling ralph-rs v0.1.21 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 53s
[INFO] running `Command { std: "docker" "inspect" "fb2adb6b7051f713340e0152202c01b291cd672e68581b6c2e9d50e415a72891", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "fb2adb6b7051f713340e0152202c01b291cd672e68581b6c2e9d50e415a72891", kill_on_drop: false }`
[INFO] [stdout] fb2adb6b7051f713340e0152202c01b291cd672e68581b6c2e9d50e415a72891
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 750cd7322a5f74d9ac7dbbc369928a3bfae4820b45931a124b1a000b152895c8
[INFO] running `Command { std: "docker" "start" "-a" "750cd7322a5f74d9ac7dbbc369928a3bfae4820b45931a124b1a000b152895c8", kill_on_drop: false }`
[INFO] [stderr]    Compiling ralph-rs v0.1.21 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1m 02s
[INFO] running `Command { std: "docker" "inspect" "750cd7322a5f74d9ac7dbbc369928a3bfae4820b45931a124b1a000b152895c8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "750cd7322a5f74d9ac7dbbc369928a3bfae4820b45931a124b1a000b152895c8", kill_on_drop: false }`
[INFO] [stdout] 750cd7322a5f74d9ac7dbbc369928a3bfae4820b45931a124b1a000b152895c8
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+cced03bfd61a304243a34504618ecec86c17063f" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 78b3a5c98bf8fe2a06342f473626425072dcf7227026111e19cccc9aa11aadf8
[INFO] running `Command { std: "docker" "start" "-a" "78b3a5c98bf8fe2a06342f473626425072dcf7227026111e19cccc9aa11aadf8", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.31s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/ralph-0a75454b414dcd79)
[INFO] [stdout] 
[INFO] [stdout] running 2586 tests
[INFO] [stdout] test cli::tests::test_harness_precedence_prefers_subcommand ... ok
[INFO] [stdout] test cli::tests::test_global_harness_flag ... ok
[INFO] [stdout] test cli::tests::test_hooks_add_lifecycle_invalid_rejected ... ok
[INFO] [stdout] test cli::tests::test_hooks_add_lifecycle_value_enum ... ok
[INFO] [stdout] test cli::tests::test_global_non_interactive_flag ... ok
[INFO] [stdout] test cli::tests::test_global_project_flag ... ok
[INFO] [stdout] test cli::tests::test_parse_bare_ralph_with_global_flags ... ok
[INFO] [stdout] test cli::tests::test_global_jsonl_alias_for_json ... ok
[INFO] [stdout] test cli::tests::test_parse_agents_list ... ok
[INFO] [stdout] test cli::tests::test_cli_debug_assert ... ok
[INFO] [stdout] test cli::tests::test_parse_cancel_force ... ok
[INFO] [stdout] test cli::tests::test_parse_cancel_defaults ... ok
[INFO] [stdout] test cli::tests::test_parse_bare_ralph_yields_none_command ... ok
[INFO] [stdout] test cli::tests::test_parse_doctor ... ok
[INFO] [stdout] test cli::tests::test_parse_cancel_timeout ... ok
[INFO] [stdout] test cli::tests::test_parse_block_positional_and_stdin ... ok
[INFO] [stdout] test cli::tests::test_parse_export ... ok
[INFO] [stdout] test cli::tests::test_parse_import ... ok
[INFO] [stdout] test cli::tests::test_parse_cancel_with_plan ... ok
[INFO] [stdout] test cli::tests::test_parse_log ... ok
[INFO] [stdout] test cli::tests::test_parse_init ... ok
[INFO] [stdout] test cli::tests::test_parse_plan_dependency_add ... ok
[INFO] [stdout] test cli::tests::test_parse_interruption_resolve_option_answer_conflict ... ok
[INFO] [stdout] test cli::tests::test_parse_log_short_id ... ok
[INFO] [stdout] test cli::tests::test_parse_plan_dependency_remove ... ok
[INFO] [stdout] test cli::tests::test_parse_plan_harness_generate_rejects_plan_flag ... ok
[INFO] [stdout] test cli::tests::test_parse_plan_create ... ok
[INFO] [stdout] test cli::tests::test_parse_plan_dependency_add_requires_depends_on ... ok
[INFO] [stdout] test cli::tests::test_parse_plan_dependency_list ... ok
[INFO] [stdout] test cli::tests::test_parse_plan_harness_set_with_positional_plan ... ok
[INFO] [stdout] test cli::tests::test_parse_plan_harness_set ... ok
[INFO] [stdout] test cli::tests::test_parse_plan_harness_generate ... ok
[INFO] [stdout] test cli::tests::test_parse_plan_create_with_deps ... ok
[INFO] [stdout] test cli::tests::test_parse_plan_harness_generate_with_positional_plan ... ok
[INFO] [stdout] test cli::tests::test_parse_plan_harness_set_rejects_plan_flag ... ok
[INFO] [stdout] test cli::tests::test_parse_plan_review_invalid_state_rejected ... ok
[INFO] [stdout] test cli::tests::test_parse_plan_harness_show ... ok
[INFO] [stdout] test cli::tests::test_parse_prompt_scope_global_and_universal_are_indistinguishable ... ok
[INFO] [stdout] test cli::tests::test_parse_plan_harness_show_rejects_plan_flag ... ok
[INFO] [stdout] test cli::tests::test_parse_plan_harness_show_with_positional_plan ... ok
[INFO] [stdout] test cli::tests::test_parse_question_ask_positional ... ok
[INFO] [stdout] test cli::tests::test_parse_plan_list ... ok
[INFO] [stdout] test cli::tests::test_parse_plan_review_on ... ok
[INFO] [stdout] test cli::tests::test_parse_question_ask_no_positional_no_suggestions ... ok
[INFO] [stdout] test cli::tests::test_parse_interruption_list_show_resolve ... ok
[INFO] [stdout] test cli::tests::test_parse_run ... ok
[INFO] [stdout] test cli::tests::test_parse_resume ... ok
[INFO] [stdout] test cli::tests::test_parse_question_ask_with_priority ... ok
[INFO] [stdout] test cli::tests::test_parse_prompt_scope_universal_resolves_to_global ... ok
[INFO] [stdout] test cli::tests::test_parse_question_list_and_answer_aliases ... ok
[INFO] [stdout] test cli::tests::test_parse_resume_no_mouse ... ok
[INFO] [stdout] test cli::tests::test_parse_run_all_with_slug_conflicts ... ok
[INFO] [stdout] test cli::tests::test_parse_run_all_plans ... ok
[INFO] [stdout] test cli::tests::test_parse_run_one ... ok
[INFO] [stdout] test cli::tests::test_parse_run_current_branch ... ok
[INFO] [stdout] test cli::tests::test_parse_run_one_and_all_conflict ... ok
[INFO] [stdout] test cli::tests::test_parse_run_no_mouse ... ok
[INFO] [stdout] test cli::tests::test_parse_run_single_alias ... ok
[INFO] [stdout] test cli::tests::test_parse_step_add_change_policy_invalid_rejected ... ok
[INFO] [stdout] test cli::tests::test_parse_status ... ok
[INFO] [stdout] test cli::tests::test_parse_skip_short_id ... ok
[INFO] [stdout] test cli::tests::test_parse_skip_force_hidden_compat_flag ... ok
[INFO] [stdout] test cli::tests::test_parse_skip ... ok
[INFO] [stdout] test cli::tests::test_parse_step_add ... ok
[INFO] [stdout] test cli::tests::test_parse_step_add_change_policy_default_none ... ok
[INFO] [stdout] test cli::tests::test_parse_run_no_auto_stash ... ok
[INFO] [stdout] test cli::tests::test_parse_step_add_depends_on_conflicts_with_import_json ... ok
[INFO] [stdout] test cli::tests::test_parse_step_add_depends_on_does_not_swallow_trailing_plan_slug ... ok
[INFO] [stdout] test cli::tests::test_parse_step_add_import_json_with_plan_slug ... ok
[INFO] [stdout] test cli::tests::test_parse_step_add_import_json ... ok
[INFO] [stdout] test cli::tests::test_parse_step_add_change_policy_optional ... ok
[INFO] [stdout] test cli::tests::test_parse_step_add_repeated_depends_on_preserves_trailing_plan_slug ... ok
[INFO] [stdout] test cli::tests::test_parse_step_add_import_json_conflicts_with_description ... ok
[INFO] [stdout] test cli::tests::test_parse_step_add_requires_title_without_import ... ok
[INFO] [stdout] test cli::tests::test_parse_step_add_with_depends_on ... ok
[INFO] [stdout] test cli::tests::test_parse_step_add_without_depends_on_is_empty ... ok
[INFO] [stdout] test cli::tests::test_parse_step_dependency_add_multi_value_with_plan_before_flag ... ok
[INFO] [stdout] test cli::tests::test_parse_step_dependency_add_multi_value_without_plan_still_works ... ok
[INFO] [stdout] test cli::tests::test_parse_step_dependency_add ... ok
[INFO] [stdout] test cli::tests::test_parse_step_dependency_add_repeated_preserves_trailing_plan_slug ... ok
[INFO] [stdout] test cli::tests::test_parse_step_dependency_add_does_not_swallow_trailing_plan_slug ... ok
[INFO] [stdout] test cli::tests::test_parse_step_dependency_list ... ok
[INFO] [stdout] test cli::tests::test_parse_step_dependency_remove ... ok
[INFO] [stdout] test cli::tests::test_plan_list_status_value_enum ... ok
[INFO] [stdout] test cli::tests::test_parse_step_edit_change_policy ... ok
[INFO] [stdout] test cli::tests::test_plan_list_status_invalid_rejected ... ok
[INFO] [stdout] test cli::tests::test_parse_step_dependency_add_requires_depends_on ... ok
[INFO] [stdout] test cli::tests::test_parse_step_dependency_add_rejects_misplaced_second_plan ... ok
[INFO] [stdout] test cli::tests::test_plan_delete ... ok
[INFO] [stdout] test cli::tests::test_parse_step_dependency_remove_multi_value_with_plan_before_flag ... ok
[INFO] [stdout] test cli::tests::test_plan_delete_yes_alias ... ok
[INFO] [stdout] test cli::tests::test_plan_set_hook_lifecycle_value_enum ... ok
[INFO] [stdout] test cli::tests::test_run_subcommand_captures_harness_flag ... ok
[INFO] [stdout] test commands::agents::tests::scaffold_has_no_leading_whitespace_drift ... ok
[INFO] [stdout] test cli::tests::test_skip_force_hidden_from_help ... ok
[INFO] [stdout] test cli::tests::test_step_reset ... ok
[INFO] [stdout] test cli::tests::test_step_remove ... ok
[INFO] [stdout] test cli::tests::test_step_move ... ok
[INFO] [stdout] test cli::tests::test_step_set_hook_lifecycle_value_enum ... ok
[INFO] [stdout] test commands::agents::tests::scaffold_matches_expected_snapshot ... ok
[INFO] [stdout] test commands::config_cmd::tests::test_redacted_config_value_hides_harness_argument_vectors ... ok
[INFO] [stdout] test cli::tests::test_step_set_hook_lifecycle_invalid_rejected ... ok
[INFO] [stdout] test cli::tests::test_step_remove_yes_alias ... ok
[INFO] [stdout] test commands::config_cmd::tests::test_config_review_set_partial_writes_persist_and_are_independent ... ok
[INFO] [stdout] test commands::config_cmd::tests::test_config_review_set_requires_at_least_one_field ... ok
[INFO] [stdout] test commands::config_cmd::tests::test_set_timezone_rejects_invalid ... ok
[INFO] [stdout] test commands::hooks::tests::all_collided_returns_err ... ok
[INFO] [stdout] test commands::hooks::tests::clean_import_returns_ok ... ok
[INFO] [stdout] test commands::hooks::tests::partial_success_returns_ok_and_reports_collisions ... ok
[INFO] [stdout] test commands::harness::tests::show_errors_on_unknown_harness ... ok
[INFO] [stdout] test commands::hooks::tests::force_with_overwrites_returns_ok ... ok
[INFO] [stdout] test commands::config_cmd::tests::test_set_timezone_persists_to_file ... ok
[INFO] [stdout] test commands::config_cmd::tests::test_show_prints_config_path_and_effective_values ... ok
[INFO] [stdout] test commands::hooks::tests::import_requires_trust_before_writing_hooks ... ok
[INFO] [stdout] test commands::harness::tests::show_succeeds_on_known_harness ... ok
[INFO] [stdout] test commands::harness::tests::list_succeeds_on_default_config ... ok
[INFO] [stdout] test commands::interruption::tests::resolve_option_out_of_range_errors_without_writing ... ok
[INFO] [stdout] test commands::interruption::tests::test_apply_retry_exhausted_resolution_case_mismatch_freeform_is_retry ... ok
[INFO] [stdout] test commands::interruption::tests::resolve_numeric_index_is_rejected_without_writing ... ok
[INFO] [stdout] test commands::interruption::tests::list_show_resolve_round_trip_native ... ok
[INFO] [stdout] test commands::interruption::tests::test_apply_retry_exhausted_resolution_fail_marks_failed ... ok
[INFO] [stdout] test commands::interruption::tests::resolve_unknown_selector_errors ... ok
[INFO] [stdout] test commands::interruption::tests::question_answer_alias_rejects_blocker_but_interruption_resolve_allows_it ... ok
[INFO] [stdout] test commands::interruption::tests::test_apply_retry_exhausted_resolution_fail_match_is_trimmed_exact ... ok
[INFO] [stdout] test commands::interruption::tests::test_apply_retry_exhausted_resolution_freeform_treated_as_retry ... ok
[INFO] [stdout] test commands::interruption::tests::test_apply_retry_exhausted_resolution_retry_resets_attempts ... ok
[INFO] [stdout] test commands::interruption::tests::test_apply_retry_exhausted_resolution_returns_false_for_harness_raised_blocker ... ok
[INFO] [stdout] test commands::interruption::tests::test_apply_retry_exhausted_resolution_returns_false_for_normal_question ... ok
[INFO] [stdout] {"event":"interruption_resolved","interruption_id":"57941b8c-d3cf-4daa-bc2d-197a1cbd581a","step_id":"e6e5feff-08cb-46cc-b98b-97e7e18c08e8","plan_slug":"p","resolution":"B","resolved_at":"2026-06-12T16:42:51.411892963Z"}
[INFO] [stdout] test commands::interruption::tests::test_cli_resolve_emits_no_panic_in_json_mode ... ok
[INFO] [stdout] test commands::interruption::tests::test_is_parked_restore_blocker_marker_detection ... ok
[INFO] [stdout] test commands::interruption::tests::test_is_parked_restore_blocker_requires_marker_prefix ... ok
[INFO] [stdout] test commands::interruption::tests::test_cli_resolve_blocker_with_comment_only_is_rejected ... ok
[INFO] [stdout] test commands::interruption::tests::test_cli_resolve_harness_blocker_with_comment_only_is_rejected ... ok
[INFO] [stdout] test commands::interruption::tests::test_apply_retry_exhausted_resolution_missing_id_errors ... ok
[INFO] [stdout] test commands::interruption::tests::test_cli_resolve_with_auto_blocker_fail_marks_step_failed ... ok
[INFO] [stdout] test commands::interruption::tests::test_cli_resolve_with_auto_blocker_retry_keeps_audit_trail_and_allows_new_attempt_one_log ... ok
[INFO] [stdout] test commands::interruption::tests::test_cli_resolve_question_with_comment_only_still_works ... ok
[INFO] [stdout] test commands::interruption::tests::test_parked_restore_blocker_freeform_resolution ... ok
[INFO] [stdout] test commands::interruption::tests::test_parked_restore_blocker_case_mismatch_freeform_is_pending ... ok
[INFO] [stdout] test commands::interruption::tests::test_cli_resolve_with_auto_blocker_retry_resets_step ... ok
[INFO] [stdout] test commands::interruption::tests::test_parked_restore_blocker_mark_failed_match_is_trimmed_exact ... ok
[INFO] [stdout] test commands::interruption::tests::test_parked_restore_blocker_mark_failed_resolution ... ok
[INFO] [stdout] test commands::plan::tests::plan_list_matches_archived_and_status_includes_both ... ok
[INFO] [stdout] test commands::plan::tests::plan_list_matches_archived_flag_includes_all ... ok
[INFO] [stdout] test commands::plan::tests::plan_list_matches_default_hides_archived ... ok
[INFO] [stdout] test commands::plan::tests::plan_list_matches_status_archived_with_flag_is_implied ... ok
[INFO] [stdout] test commands::plan::tests::plan_list_matches_status_only_filters_to_exact_status ... ok
[INFO] [stdout] test commands::interruption::tests::test_parked_restore_blocker_mark_pending_resolution ... ok
[INFO] [stdout] test commands::interruption::tests::test_resolve_escalation_blocker_inserts_one_human_approved_request ... ok
[INFO] [stdout] test commands::interruption::tests::test_resolve_plain_blocker_inserts_no_corrective_request ... ok
[INFO] [stdout] test commands::interruption::tests::test_resolve_with_retry_handling_normal_question_only_resolves ... ok
[INFO] [stdout] test commands::interruption::tests::test_resolve_with_retry_handling_parked_restore_returns_false ... ok
[INFO] [stdout] test commands::interruption::tests::test_resolve_with_retry_handling_atomic_resolve_and_reset ... ok
[INFO] [stdout] test commands::interruption::tests::test_resolve_with_retry_handling_missing_id_leaves_state_clean ... ok
[INFO] [stdout] test commands::plan::tests::test_cmd_plan_review_toggles_on_then_off_persists ... ok
[INFO] [stdout] test commands::plan::tests::test_plan_create_invalid_branch_errors_and_writes_no_plan ... ok
[INFO] [stdout] test commands::plan::tests::test_cmd_plan_review_unknown_slug_errors ... ok
[INFO] [stdout] test commands::plan::tests::test_plan_create_blank_slug_errors_and_writes_no_plan ... ok
[INFO] [stdout] test commands::plan::tests::test_plan_create_rolls_back_plan_row_on_late_dependency_failure ... ok
[INFO] [stdout] test commands::plan::tests::test_plan_create_negative_max_review_corrections_errors_and_writes_no_plan ... ok
[INFO] [stdout] test commands::plan::tests::test_plan_create_valid_branch_succeeds ... ok
[INFO] [stdout] test commands::plan::tests::test_review_scope_precedence_end_to_end ... ok
[INFO] [stdout] test commands::prompt::tests::project_clear_clears_db_when_file_absent ... ok
[INFO] [stdout] test commands::prompt::tests::project_clear_deletes_file_and_clears_db_when_file_active ... ok
[INFO] [stdout] test commands::prompt::tests::project_set_targets_db_when_file_absent ... ok
[INFO] [stdout] test commands::prompt::tests::project_set_empty_clears_file_and_db_when_file_active ... ok
[INFO] [stdout] test commands::question::tests::ask_priorities_pair_by_position_then_default_append ... ok
[INFO] [stdout] test commands::question::tests::build_options_errors_on_negative_priority ... ok
[INFO] [stdout] test commands::question::tests::build_options_errors_on_zero_priority ... ok
[INFO] [stdout] test commands::question::tests::build_options_errors_when_more_priorities_than_suggestions ... ok
[INFO] [stdout] test commands::question::tests::build_options_ok_when_counts_match_with_valid_priorities ... ok
[INFO] [stdout] test commands::question::tests::build_options_ok_when_fewer_priorities_than_suggestions ... ok
[INFO] [stdout] test commands::prompt::tests::universal_alias_sets_global_prompt_like_global ... ok
[INFO] [stdout] test commands::prompt::tests::project_set_targets_file_when_file_present ... ok
[INFO] [stdout] test commands::question::tests::block_always_raises_an_interruption_in_an_active_run ... ok
[INFO] [stdout] test commands::question::tests::block_inserts_native_blocker_with_no_options ... ok
[INFO] [stdout] test commands::question::tests::block_is_rejected_outside_a_run_exactly_like_question ... ok
[INFO] [stdout] test commands::question::tests::block_rejects_empty_body ... ok
[INFO] [stdout] test commands::question::tests::block_rejects_whitespace_only_body ... ok
[INFO] [stdout] test commands::question::tests::empty_suggestions_round_trip_as_empty_options ... ok
[INFO] [stdout] test commands::question::tests::lock_row_with_null_step_id_returns_no_active_run ... ok
[INFO] [stdout] test commands::question::tests::no_active_run_returns_no_active_run ... ok
[INFO] [stdout] test commands::question::tests::missing_attempt_on_lock_row_defaults_to_one ... ok
[INFO] [stdout] test commands::question::tests::non_empty_body_is_accepted ... ok
[INFO] [stdout] test commands::question::tests::question_ask_inserts_native_question_interruption ... ok
[INFO] [stdout] test commands::question::tests::question_ask_rejects_whitespace_only_body ... ok
[INFO] [stdout] test commands::question::tests::question_ask_rejects_empty_body ... ok
[INFO] [stdout] {"event":"interruption_raised","interruption_id":"d84125b3-cc89-4d82-858f-adef94372bac","step_id":"08d808fc-2009-48e1-b167-a5ab77ac95f9","plan_slug":"p-json-b","kind":"blocker","auto_raised":false,"attempt":2,"raised_at":"2026-06-12T16:42:53.904364391Z"}
[INFO] [stdout] test commands::question::tests::record_block_in_json_mode_still_inserts_blocker_row ... ok
[INFO] [stdout] test commands::question::tests::questions_always_raise_an_interruption_in_an_active_run ... ok
[INFO] [stdout] test commands::question::tests::stale_lock_from_dead_runner_returns_no_active_run ... ok
[INFO] [stdout] {"event":"interruption_raised","interruption_id":"6d04a393-1984-4cc6-93c5-a99498cd57b3","step_id":"e23102ad-f413-4926-9cca-941c480a1f61","plan_slug":"p-json-q","kind":"question","auto_raised":false,"attempt":1,"raised_at":"2026-06-12T16:42:53.962313199Z"}
[INFO] [stdout] test commands::question::tests::record_question_ask_in_json_mode_still_inserts_question_row ... ok
[INFO] [stdout] test commands::run::archived_list_dispatcher_tests::delete_with_multi_selection_pluralizes_toast ... ok
[INFO] [stdout] test commands::run::archived_list_dispatcher_tests::delete_clears_selection_via_refresh ... ok
[INFO] [stdout] test commands::run::archived_list_dispatcher_tests::enter_path_targets_cursor_when_no_selection ... ok
[INFO] [stdout] test commands::run::archived_list_dispatcher_tests::delete_targets_removes_from_db_and_tile_list ... ok
[INFO] [stdout] test commands::run::archived_list_dispatcher_tests::esc_dismisses_toast_when_one_is_present_and_preserves_selection ... ok
[INFO] [stdout] test commands::run::archived_list_dispatcher_tests::esc_falls_through_to_clear_selection_when_no_toast ... ok
[INFO] [stdout] test commands::run::archived_list_dispatcher_tests::esc_falls_through_to_pop_when_no_toast_and_no_selection ... ok
[INFO] [stdout] test commands::run::archived_list_dispatcher_tests::read_only_archived_palette_blocks_unarchive ... ok
[INFO] [stdout] test commands::run::archived_list_dispatcher_tests::refresh_on_empty_archived_view_still_toasts ... ok
[INFO] [stdout] test commands::run::archived_list_dispatcher_tests::refresh_drops_externally_unarchived_plan ... ok
[INFO] [stdout] test commands::run::archived_list_dispatcher_tests::unarchive_empties_view_when_last_archived_plan_returns ... ok
[INFO] [stdout] test commands::run::archived_list_dispatcher_tests::unarchive_targets_flips_status_to_ready_and_drops_from_archived_view ... ok
[INFO] [stdout] test commands::run::archived_list_dispatcher_tests::refresh_picks_up_externally_archived_plan_and_toasts ... ok
[INFO] [stdout] test commands::run::cancel_tests::cancel_summary_json_shape ... ok
[INFO] [stdout] test commands::run::mouse_routing_tests::archived_list_dispatcher_routes_mouse_to_handle_mouse ... ok
[INFO] [stdout] test commands::run::mouse_routing_tests::handle_mouse_default_is_noop_for_plan_list ... ok
[INFO] [stdout] test commands::run::mouse_routing_tests::inbox_dispatcher_routes_mouse_to_handle_mouse ... ok
[INFO] [stdout] test commands::run::mouse_routing_tests::plan_dependencies_dispatcher_routes_mouse_to_handle_mouse ... ok
[INFO] [stdout] test commands::run::mouse_routing_tests::plan_detail_dispatcher_routes_mouse_to_handle_mouse ... ok
[INFO] [stdout] test commands::run::mouse_routing_tests::plan_hooks_dispatcher_routes_mouse_to_handle_mouse ... ok
[INFO] [stdout] test commands::run::mouse_routing_tests::plan_list_dispatcher_routes_mouse_to_handle_mouse ... ok
[INFO] [stdout] test commands::run::mouse_routing_tests::rendered_prompt_dispatcher_routes_mouse_to_handle_mouse ... ok
[INFO] [stdout] test commands::run::mouse_routing_tests::step_detail_dispatcher_routes_mouse_to_handle_mouse ... ok
[INFO] [stdout] test commands::run::mouse_routing_tests::step_hooks_dispatcher_routes_mouse_to_handle_mouse ... ok
[INFO] [stdout] test commands::run::mouse_routing_tests::step_tags_dispatcher_routes_mouse_to_handle_mouse ... ok
[INFO] [stdout] test commands::run::archived_list_dispatcher_tests::unarchive_with_multi_selection_pluralizes_toast ... ok
[INFO] [stdout] test commands::run::cancel_tests::cancel_dead_target_cleans_up_row ... ok
[INFO] [stdout] test commands::run::cancel_tests::cancel_force_kills_live_script ... ok
[INFO] [stdout] test commands::run::cancel_tests::cancel_no_live_run_is_ok ... ok
[INFO] [stdout] test commands::run::cancel_tests::cancel_plan_mismatch_errors ... ok
[INFO] [stdout] test commands::run::cancel_tests::cancel_stale_log_cleanup_preserves_observability_fields ... ok
[INFO] [stdout] test commands::run::cancel_tests::cancel_stale_log_does_not_overwrite_existing_terminal_reason ... ok
[INFO] [stdout] test commands::run::palette_action_tests::applying_toast_action_pushes_onto_view_queue ... ok
[INFO] [stdout] test commands::run::palette_action_tests::approve_refreshes_in_place_tile_and_toasts_success ... ok
[INFO] [stdout] test commands::run::palette_action_tests::archive_command_returns_confirm_action_then_apply_archives_and_refreshes ... ok
[INFO] [stdout] test commands::run::palette_help_routing_tests::palette_input_gets_question_mark_before_help_overlay ... ok
[INFO] [stdout] test commands::run::palette_action_tests::archive_unknown_slug_toasts_error ... ok
[INFO] [stdout] test commands::run::palette_action_tests::empty_palette_input_is_a_silent_close ... ok
[INFO] [stdout] test commands::run::palette_action_tests::live_plan_detail_blocks_mutating_palette_actions ... ok
[INFO] [stdout] test commands::run::palette_action_tests::read_only_plan_detail_blocks_mutating_palette_actions ... ok
[INFO] [stdout] test commands::run::plan_detail_init_tests::auto_start_resume_does_not_disturb_default_run_mode ... ok
[INFO] [stdout] test commands::run::plan_detail_init_tests::auto_start_run_latches_flags_onto_app ... ok
[INFO] [stdout] test commands::run::plan_detail_init_tests::no_auto_start_leaves_default_run_mode ... ok
[INFO] [stdout] test commands::run::palette_action_tests::read_only_plan_list_blocks_mutating_palette_actions ... ok
[INFO] [stdout] test commands::run::palette_action_tests::read_only_plan_detail_blocks_mutating_palette_subviews ... ok
[INFO] [stdout] test commands::run::pause_tests::pause_with_explicit_slug_mismatching_live_run_errors ... ok
[INFO] [stdout] test commands::run::pause_tests::pause_with_explicit_slug_matching_live_run_sets_flag ... ok
[INFO] [stdout] test commands::run::palette_action_tests::parse_error_for_unknown_command_yields_toast_action ... ok
[INFO] [stdout] test commands::run::pause_tests::pause_with_no_live_run_errors_and_does_not_arm_flag ... ok
[INFO] [stdout] test commands::run::pause_tests::pause_with_live_run_sets_flag_for_correct_plan ... ok
[INFO] [stdout] test commands::run::plan_list_action_tests::apply_create_clears_selection_via_refresh ... ok
[INFO] [stdout] test commands::run::plan_list_action_tests::apply_create_duplicate_slug_emits_error_toast_and_leaves_tiles_untouched ... ok
[INFO] [stdout] test commands::run::plan_list_action_tests::approve_cursor_empty_app_is_noop ... ok
[INFO] [stdout] test commands::run::plan_list_action_tests::apply_create_inserts_plan_and_positions_cursor_on_it ... ok
[INFO] [stdout] test commands::run::plan_list_action_tests::apply_create_with_empty_tests_passes_empty_vec ... ok
[INFO] [stdout] test commands::run::plan_list_action_tests::apply_create_uses_configured_default_harness ... ok
[INFO] [stdout] test commands::run::plan_list_action_tests::approve_cursor_flips_planning_to_ready ... ok
[INFO] [stdout] test commands::run::resume_dispatch_tests::bare_invocation_on_tty_routes_to_tui ... ok
[INFO] [stdout] test commands::run::resume_dispatch_tests::bare_invocation_with_plan_slug_routes_to_tui ... ok
[INFO] [stdout] test commands::run::resume_dispatch_tests::force_flag_bypasses_tui ... ok
[INFO] [stdout] test commands::run::resume_dispatch_tests::harness_override_bypasses_tui ... ok
[INFO] [stdout] test commands::run::resume_dispatch_tests::json_flag_bypasses_tui ... ok
[INFO] [stdout] test commands::run::resume_dispatch_tests::no_mouse_still_routes_to_tui ... ok
[INFO] [stdout] test commands::run::resume_dispatch_tests::non_interactive_flag_bypasses_tui ... ok
[INFO] [stdout] test commands::run::resume_dispatch_tests::non_tty_stdout_bypasses_tui ... ok
[INFO] [stdout] test commands::run::resume_dispatch_tests::quiet_flag_bypasses_tui ... ok
[INFO] [stdout] test commands::run::resume_parity_tests::streaming_resume_reaches_same_cli_surface_as_user_typed_resume ... ok
[INFO] [stdout] test commands::run::run_dialog_apply_tests::apply_outcome_cancelled_yields_empty_report ... ok
[INFO] [stdout] test commands::run::run_dialog_apply_tests::apply_outcome_pending_yields_empty_report ... ok
[INFO] [stdout] test commands::run::plan_list_action_tests::esc_dismisses_toast_when_one_is_present_and_preserves_selection ... ok
[INFO] [stdout] test commands::run::plan_list_action_tests::approve_cursor_on_non_planning_emits_info_toast_and_keeps_status ... ok
[INFO] [stdout] test commands::run::plan_list_action_tests::esc_falls_through_to_clear_selection_when_no_toast ... ok
[INFO] [stdout] test commands::run::run_dialog_apply_tests::classify_branch_rejects_invalid_name_before_git_state_checks ... ok
[INFO] [stdout] test commands::run::run_dialog_apply_tests::flush_palette_run_toasts_drains_into_view_queue ... ok
[INFO] [stdout] test commands::run::plan_list_action_tests::esc_is_noop_when_no_toast_and_no_selection ... ok
[INFO] [stdout] test commands::run::run_dialog_apply_tests::classify_branch_missing_returns_needs_create ... ok
[INFO] [stdout] test commands::run::plan_list_action_tests::refresh_drops_externally_archived_plan ... ok
[INFO] [stdout] test commands::run::plan_list_action_tests::refresh_on_empty_project_still_toasts ... ok
[INFO] [stdout] test commands::run::run_dialog_apply_tests::spawn_runners_toasts_singular_for_one_plan ... ok
[INFO] [stdout] test commands::run::run_dispatch_tests::bare_invocation_on_tty_routes_to_tui ... ok
[INFO] [stdout] test commands::run::run_dispatch_tests::bare_invocation_with_plan_slug_routes_to_tui ... ok
[INFO] [stdout] test commands::run::run_dispatch_tests::current_branch_bypasses_tui ... ok
[INFO] [stdout] test commands::run::run_dispatch_tests::harness_override_at_either_scope_bypasses_tui ... ok
[INFO] [stdout] test commands::run::run_dispatch_tests::json_flag_bypasses_tui ... ok
[INFO] [stdout] test commands::run::run_dispatch_tests::no_auto_stash_bypasses_tui ... ok
[INFO] [stdout] test commands::run::run_dispatch_tests::no_mouse_still_routes_to_tui ... ok
[INFO] [stdout] test commands::run::run_dispatch_tests::non_interactive_flag_bypasses_tui ... ok
[INFO] [stdout] test commands::run::run_dispatch_tests::non_tty_stdout_bypasses_tui ... ok
[INFO] [stdout] test commands::run::plan_list_action_tests::refresh_picks_up_externally_inserted_plan_and_toasts ... ok
[INFO] [stdout] test commands::run::run_dispatch_tests::run_specific_flags_each_bypass_tui ... ok
[INFO] [stdout] test commands::run::run_dispatch_tests::verbose_bypasses_tui ... ok
[INFO] [stdout] test commands::run::status_live_view_tests::test_cmd_log_json_record_shapes_cover_plain_sections ... ok
[INFO] [stdout] test commands::run::run_dialog_apply_tests::classify_branch_already_on_target_returns_already_on_target ... ok
[INFO] [stdout] test commands::run::run_dialog_apply_tests::classify_branch_existing_returns_switch_existing ... ok
[INFO] [stdout] test commands::run::run_dialog_apply_tests::plan_list_apply_forwards_open_run_dialog_to_caller ... ok
[INFO] [stdout] test commands::run::run_dialog_apply_tests::plan_list_apply_forwards_run_on_branch_to_caller ... ok
[INFO] [stdout] test commands::run::status_live_view_tests::test_render_live_block_formats_current_section ... ok
[INFO] [stdout] test commands::run::run_dialog_apply_tests::slash_run_with_focus_returns_open_run_dialog ... ok
[INFO] [stdout] test commands::run::run_dialog_apply_tests::slash_run_with_branch_short_circuits_dialog ... ok
[INFO] [stdout] test commands::run::status_live_view_tests::test_collect_iteration_commits_empty_when_no_repo ... ok
[INFO] [stdout] test commands::run::status_live_view_tests::test_cmd_log_json_includes_termination_reason ... ok
[INFO] [stdout] test commands::run::status_live_view_tests::test_collect_skip_wip_commits_empty_when_no_repo ... ok
[INFO] [stdout] test commands::run::status_live_view_tests::test_status_live_with_unbound_plan_id_still_attaches ... ok
[INFO] [stdout] test commands::run::status_live_view_tests::test_status_with_live_run_populates_json_live_field ... ok
[INFO] [stdout] test commands::run::status_live_view_tests::test_status_live_child_pid_clears_after_harness_phase ... ok
[INFO] [stdout] test commands::run::status_live_view_tests::test_status_plan_mismatch_omits_live_field ... ok
[INFO] [stdout] test commands::run::status_live_view_tests::test_status_without_live_run_omits_live_field ... ok
[INFO] [stdout] test commands::run::step_detail_dispatcher_tests::answer_modal_freeform_no_editor_surfaces_toast ... ok
[INFO] [stdout] test commands::run::step_detail_dispatcher_tests::c_on_plan_prompt_pane_persists_plan_description ... ok
[INFO] [stdout] test commands::run::step_detail_dispatcher_tests::c_on_step_prompt_persists_edited_step ... ok
[INFO] [stdout] test commands::run::status_live_view_tests::test_collect_skip_wip_commits_resolves_step_and_short_sha ... ok
[INFO] [stdout] test commands::run::step_detail_dispatcher_tests::c_on_tests_pane_persists_edited_tests ... ok
[INFO] [stdout] test commands::run::step_detail_dispatcher_tests::esc_dismisses_only_one_toast_at_a_time ... ok
[INFO] [stdout] test commands::run::step_detail_dispatcher_tests::esc_dismisses_toast_without_popping ... ok
[INFO] [stdout] test commands::run::step_detail_dispatcher_tests::esc_falls_through_to_request_pop_when_no_toast ... ok
[INFO] [stdout] test commands::run::step_detail_dispatcher_tests::c_on_universal_pane_persists_to_disk ... ok
[INFO] [stdout] test commands::run::step_detail_dispatcher_tests::c_with_no_editor_toasts_no_editor ... ok
[INFO] [stdout] test commands::run::step_detail_dispatcher_tests::c_with_parse_error_toasts_prefixed_message ... ok
[INFO] [stdout] test commands::run::step_detail_dispatcher_tests::c_with_unchanged_buffer_toasts_no_changes ... ok
[INFO] [stdout] test commands::run::step_detail_dispatcher_tests::external_run_lock_engages_lockdown_and_blocks_edits ... ok
[INFO] [stdout] test commands::run::step_detail_dispatcher_tests::open_picker_is_closed_when_lockdown_engages ... ok
[INFO] [stdout] test commands::run::status_live_view_tests::test_collect_iteration_commits_groups_by_step_short_id ... ok
[INFO] [stdout] test commands::run::step_detail_dispatcher_tests::refresh_step_detail_state_refreshes_execution_logs ... ok
[INFO] [stdout] test commands::run::sub_view_routing_tests::plan_detail_delete_uses_immediate_outline_refresh_helper ... ok
[INFO] [stdout] test commands::run::step_detail_dispatcher_tests::refresh_step_detail_state_reloads_step_status_and_attempts ... ok
[INFO] [stdout] test commands::run::step_detail_dispatcher_tests::root_quit_confirms_when_run_lock_is_live ... ok
[INFO] [stdout] test commands::run::step_detail_dispatcher_tests::connection_database_path_distinguishes_memory_and_file_backed_dbs ... ok
[INFO] [stdout] test commands::run::sub_view_routing_tests::plan_detail_apply_toggle_pause_first_press_sets_flag_and_toasts ... ok
[INFO] [stdout] test commands::run::sub_view_routing_tests::plan_detail_apply_toggle_pause_second_press_clears_flag_and_toasts_cancel ... ok
[INFO] [stdout] test commands::run::step_detail_dispatcher_tests::c_on_read_only_panes_is_a_noop ... ok
[INFO] [stdout] test commands::run::sub_view_routing_tests::plan_detail_append_below_depends_on_selected_step ... ok
[INFO] [stdout] test commands::run::sub_view_routing_tests::plan_detail_insert_above_splices_selected_step_parents ... ok
[INFO] [stdout] test commands::run::sub_view_routing_tests::read_only_step_detail_blocks_mutating_palette_actions ... ok
[INFO] [stdout] test commands::run::sub_view_routing_tests::read_only_step_detail_blocks_mutating_palette_subviews ... ok
[INFO] [stdout] test commands::run::sub_view_routing_tests::slash_plan_dependency_from_plan_list_routes_to_dependencies_dispatcher ... ok
[INFO] [stdout] test commands::run::sub_view_routing_tests::refresh_plan_detail_steps_and_outline_drops_deleted_rows_immediately ... ok
[INFO] [stdout] test commands::run::sub_view_routing_tests::slash_plan_dependency_from_plan_detail_routes_to_dependencies_dispatcher ... ok
[INFO] [stdout] test commands::run::sub_view_routing_tests::slash_plan_hook_verbs_from_plan_list_route_to_hooks_dispatcher ... ok
[INFO] [stdout] test commands::run::tui_polling_loop_tests::archived_list_loop_polls_before_reading_events ... ok
[INFO] [stdout] test commands::run::tui_polling_loop_tests::inbox_key_is_available_from_tui_views ... ok
[INFO] [stdout] test commands::run::sub_view_routing_tests::slash_plan_dependency_from_step_detail_routes_to_dependencies_dispatcher ... ok
[INFO] [stdout] test commands::run::tui_polling_loop_tests::modal_loops_poll_before_reading_events ... ok
[INFO] [stdout] test commands::step::tests::test_parse_bulk_steps_array ... ok
[INFO] [stdout] test commands::step::tests::test_parse_bulk_steps_invalid_rejected ... ok
[INFO] [stdout] test commands::step::tests::test_parse_bulk_steps_single_object ... ok
[INFO] [stdout] test commands::run::sub_view_routing_tests::slash_plan_hooks_from_plan_detail_routes_to_hooks_dispatcher ... ok
[INFO] [stdout] test commands::run::sub_view_routing_tests::slash_plan_hooks_from_step_detail_routes_to_hooks_dispatcher ... ok
[INFO] [stdout] test commands::run::sub_view_routing_tests::slash_step_hooks_from_plan_list_toasts_open_a_step_first ... ok
[INFO] [stdout] test commands::run::sub_view_routing_tests::slash_step_tags_from_step_detail_routes_to_step_tags_dispatcher ... ok
[INFO] [stdout] test commands::run::sub_view_routing_tests::slash_step_hooks_from_step_detail_routes_to_step_hooks_dispatcher ... ok
[INFO] [stdout] test commands::run::sub_view_routing_tests::slash_step_tags_from_plan_list_toasts_open_a_step_first ... ok
[INFO] [stdout] test commands::step::tests::test_step_add_bulk_from_file_inserts_array ... ok
[INFO] [stdout] test commands::step::tests::test_render_tags_inline ... ok
[INFO] [stdout] test commands::step::tests::test_step_add_bulk_empty_title_fails_atomically ... ok
[INFO] [stdout] test commands::step::tests::test_step_add_bulk_from_file_single_object ... ok
[INFO] [stdout] test commands::step::tests::test_step_add_bulk_negative_max_retries_fails_atomically ... ok
[INFO] [stdout] test commands::step::tests::test_step_add_depends_on_bad_selector_fails_fast ... ok
[INFO] [stdout] test commands::step::tests::test_step_add_empty_title_fails_atomically ... ok
[INFO] [stdout] test commands::step::tests::test_step_add_bulk_rejects_invalid_tags ... ok
[INFO] [stdout] test commands::step::tests::test_step_add_rejects_duplicate_tag_in_same_invocation ... ok
[INFO] [stdout] test commands::step::tests::test_step_add_with_depends_on_attaches_edges ... ok
[INFO] [stdout] test commands::step::tests::test_step_add_rejects_empty_tag ... ok
[INFO] [stdout] test commands::step::tests::test_step_dependency_remove_is_atomic_on_mixed_validity_input ... ok
[INFO] [stdout] test commands::step::tests::test_step_dependency_add_is_atomic_on_mixed_validity_input ... ok
[INFO] [stdout] test commands::step::tests::test_step_add_with_tags ... ok
[INFO] [stdout] test commands::step::tests::test_step_edit_replaces_tags ... ok
[INFO] [stdout] test commands::step::tests::test_step_edit_clear_criteria ... ok
[INFO] [stdout] test commands::step::tests::test_step_edit_clear_tags ... ok
[INFO] [stdout] test commands::step::tests::test_step_edit_no_tag_flag_leaves_tags_unchanged ... ok
[INFO] [stdout] test commands::step::tests::test_step_edit_review_override_persists_each_scope_value ... ok
[INFO] [stdout] test commands::step::tests::test_step_list_filter_by_tag ... ok
[INFO] [stdout] test commands::step::tests::test_step_list_filter_requires_all_tags ... ok
[INFO] [stdout] test commands::step::tests::test_step_list_omits_budget_for_pending_default_steps ... ok
[INFO] [stdout] test commands::step::tests::test_step_list_shows_attempts_budget_when_relevant ... ok
[INFO] [stdout] test commands::step::tests::test_step_list_shows_budget_after_attempts_even_without_override ... ok
[INFO] [stdout] test commands::step::tests::test_step_reset_no_wip_still_resets ... ok
[INFO] [stdout] test commands::tests::test_init_writes_config_through_atomic_save_at ... ok
[INFO] [stdout] test commands::tests::test_migrate_existing_config_fills_missing_copilot_fields ... ok
[INFO] [stdout] test commands::tests::test_migrate_existing_config_no_op_when_complete ... ok
[INFO] [stdout] test commands::step::tests::test_step_reset_force_reverts_wip ... ok
[INFO] [stdout] test commands::tests::test_plan_approve ... ok
[INFO] [stdout] test commands::step::tests::test_step_reset_non_interactive_requires_force_before_reverting_wip ... ok
[INFO] [stdout] test commands::step::tests::test_step_reset_already_reverted_clean ... ok
[INFO] [stdout] test commands::tests::test_plan_approve_rejects_non_planning ... ok
[INFO] [stdout] test commands::tests::test_plan_create_and_list ... ok
[INFO] [stdout] test commands::step::tests::test_step_reset_multiple_wip_commits_reverted ... ok
[INFO] [stdout] test commands::tests::test_plan_create_with_deps ... ok
[INFO] [stdout] test commands::tests::test_plan_create_with_missing_dep_errors ... ok
[INFO] [stdout] test commands::tests::test_plan_delete_forced ... ok
[INFO] [stdout] test commands::step::tests::test_step_reset_wip_not_on_head ... ok
[INFO] [stdout] test commands::tests::test_plan_delete_non_interactive_requires_force ... ok
[INFO] [stdout] test commands::step::tests::test_step_reset_without_force_prompt_declined_no_revert ... ok
[INFO] [stdout] test commands::tests::test_plan_dependency_add_happy_path ... ok
[INFO] [stdout] test commands::tests::test_plan_dependency_add_rejects_cycle ... ok
[INFO] [stdout] test commands::tests::test_plan_dependency_add_rejects_self_reference ... ok
[INFO] [stdout] test commands::tests::test_plan_dependency_remove ... ok
[INFO] [stdout] test commands::tests::test_plan_dependency_list_resolves_both_directions ... ok
[INFO] [stdout] test commands::tests::test_resolve_plan_optional_rejects_empty_slug ... ok
[INFO] [stdout] test commands::tests::test_resolve_plan_optional_finds_explicit_slug ... ok
[INFO] [stdout] test commands::tests::test_resolve_plan_optional_returns_none_without_active_plan ... ok
[INFO] [stdout] test commands::tests::test_resolve_resume_plan_errors_when_nothing_matches ... ok
[INFO] [stdout] test commands::tests::test_resolve_resume_plan_falls_back_to_resumable_plan_when_no_branch_match ... ok
[INFO] [stdout] test commands::step::tests::test_step_reset_reverts_only_target_iteration_commits ... ok
[INFO] [stdout] test commands::tests::test_resolve_resume_plan_no_false_match_for_slug_named_branch ... ok
[INFO] [stdout] test commands::tests::test_resolve_resume_plan_never_run_uses_branch_name_fallback ... ok
[INFO] [stdout] test commands::tests::test_resolve_resume_plan_falls_back_to_aborted_plan_when_no_branch_match ... ok
[INFO] [stdout] test commands::tests::test_resolve_resume_plan_no_slug_picks_most_recent_when_ambiguous ... ok
[INFO] [stdout] test commands::tests::test_seed_global_prompt_preserves_customization_without_flag ... ok
[INFO] [stdout] test commands::tests::test_resolve_resume_plan_no_slug_single_branch_match ... ok
[INFO] [stdout] test commands::tests::test_seed_global_prompt_restore_overwrites_customization ... ok
[INFO] [stdout] test commands::tests::test_seed_global_prompt_seeds_when_blank ... ok
[INFO] [stdout] test commands::tests::test_seed_global_prompt_seeds_when_missing ... ok
[INFO] [stdout] test commands::tests::test_resolve_step_ambiguous_looking_but_numeric ... ok
[INFO] [stdout] test commands::tests::test_resolve_step_numeric_selector_still_works ... ok
[INFO] [stdout] test commands::tests::test_resolve_resume_plan_with_slug_uses_exact_lookup ... ok
[INFO] [stdout] test commands::tests::test_resolve_step_short_id_resolves_same_step_as_number ... ok
[INFO] [stdout] test commands::tests::test_resolve_step_short_id_scoped_to_plan ... ok
[INFO] [stdout] test commands::tests::test_resolve_step_unknown_short_id_errors_cleanly ... ok
[INFO] [stdout] test commands::tests::test_step_add_and_list ... ok
[INFO] [stdout] test commands::tests::test_step_add_after_with_criteria ... ok
[INFO] [stdout] test commands::tests::test_step_add_after ... ok
[INFO] [stdout] test commands::tests::test_step_add_with_criteria_and_max_retries ... ok
[INFO] [stdout] test commands::tests::test_step_dependency_add_remove_list_end_to_end ... ok
[INFO] [stdout] test config::tests::test_agents_dir_returns_path ... ok
[INFO] [stdout] test config::tests::test_auto_stash_defaults_to_true_when_missing_in_json ... ok
[INFO] [stdout] test config::tests::test_compat_clean_on_default_config ... ok
[INFO] [stdout] test config::tests::test_compat_warns_on_copilot_with_non_argv_prompt_input ... ok
[INFO] [stdout] test config::tests::test_compat_warns_on_copilot_with_spill_overflow ... ok
[INFO] [stdout] test config::tests::test_compat_warns_on_missing_model_args ... ok
[INFO] [stdout] test config::tests::test_config_deserialize_from_json ... ok
[INFO] [stdout] test config::tests::test_config_dir_returns_path ... ok
[INFO] [stdout] test config::tests::test_config_json_roundtrip ... ok
[INFO] [stdout] test config::tests::test_data_dir_returns_path ... ok
[INFO] [stdout] test config::tests::test_default_config_has_all_harnesses ... ok
[INFO] [stdout] test config::tests::test_default_harnesses_have_no_footguns ... ok
[INFO] [stdout] test config::tests::test_default_timezone_is_utc ... ok
[INFO] [stdout] test config::tests::test_display_timezone_missing_in_json_defaults_to_utc ... ok
[INFO] [stdout] test config::tests::test_effective_review_enabled_all_null_is_false ... ok
[INFO] [stdout] test config::tests::test_effective_review_enabled_falls_through_to_global ... ok
[INFO] [stdout] test config::tests::test_effective_review_enabled_plan_overrides_global ... ok
[INFO] [stdout] test config::tests::test_effective_review_enabled_precedence ... ok
[INFO] [stdout] test commands::tests::test_step_edit ... ok
[INFO] [stdout] test config::tests::test_footguns_codex_orchestrator_is_clean ... ok
[INFO] [stdout] test config::tests::test_footguns_flag_claude_without_permission_mode ... ok
[INFO] [stdout] test config::tests::test_footguns_flag_codex_without_sandbox ... ok
[INFO] [stdout] test config::tests::test_effective_review_enabled_step_overrides_plan_and_global ... ok
[INFO] [stdout] test config::tests::test_harness_chunk_max_bytes_round_trips ... ok
[INFO] [stdout] test config::tests::test_harness_color_json_roundtrip ... ok
[INFO] [stdout] test config::tests::test_harness_color_override_hex_parsed ... ok
[INFO] [stdout] test config::tests::test_harness_chunk_max_bytes_default_is_4096 ... ok
[INFO] [stdout] test config::tests::test_harness_config_fields ... ok
[INFO] [stdout] test config::tests::test_invalid_timezone_fails_to_load ... ok
[INFO] [stdout] test config::tests::test_layer_function_reports_filled_fields ... ok
[INFO] [stdout] test config::tests::test_layered_load_fills_missing_copilot_delivery_fields ... ok
[INFO] [stdout] test config::tests::test_layered_load_leaves_custom_harnesses_untouched ... ok
[INFO] [stdout] test config::tests::test_layered_load_preserves_explicit_empty_array ... ok
[INFO] [stdout] test config::tests::test_harness_config_default_fields ... ok
[INFO] [stdout] test config::tests::test_legacy_customized_prefix_is_preserved_verbatim ... ok
[INFO] [stdout] test config::tests::test_legacy_default_prefix_migrates_to_context_prepend ... ok
[INFO] [stdout] test config::tests::test_legacy_prompt_migration_keeps_existing_new_field ... ok
[INFO] [stdout] test config::tests::test_legacy_prompt_migration_skips_missing_sides ... ok
[INFO] [stdout] test commands::tests::test_step_move ... ok
[INFO] [stdout] test config::tests::test_legacy_prompt_fields_migrate_and_rewrite_on_load ... ok
[INFO] [stdout] test commands::tests::test_step_move_to_end ... ok
[INFO] [stdout] test config::tests::test_min_free_disk_mb_round_trips ... ok
[INFO] [stdout] test config::tests::test_review_config_absent_in_json_defaults_off ... ok
[INFO] [stdout] test config::tests::test_review_config_partial_block_uses_field_defaults ... ok
[INFO] [stdout] test config::tests::test_review_config_round_trips ... ok
[INFO] [stdout] test config::tests::test_load_or_create_config_creates_file ... ok
[INFO] [stdout] test config::tests::test_safety_summary_reports_sandbox_value ... ok
[INFO] [stdout] test config::tests::test_min_free_disk_mb_default_is_1024 ... ok
[INFO] [stdout] test config::tests::test_load_or_create_config_at_is_toctou_safe ... ok
[INFO] [stdout] test config::tests::test_valid_custom_timezone_passes ... ok
[INFO] [stdout] test config::tests::test_validate_accepts_default_config ... ok
[INFO] [stdout] test config::tests::test_timeout_secs_deserializes_zero_and_null_as_none ... ok
[INFO] [stdout] test config::tests::test_validate_rejects_empty_default_harness ... ok
[INFO] [stdout] test dag_util::tests::closure_error_propagates ... ok
[INFO] [stdout] test dag_util::tests::direct_edge_back_is_a_cycle ... ok
[INFO] [stdout] test dag_util::tests::fan_in_does_not_falsely_report_a_cycle ... ok
[INFO] [stdout] test dag_util::tests::pre_existing_cycle_in_graph_does_not_loop_forever ... ok
[INFO] [stdout] test dag_util::tests::self_edge_is_a_cycle ... ok
[INFO] [stdout] test dag_util::tests::transitive_edge_back_is_a_cycle ... ok
[INFO] [stdout] test dag_util::tests::unrelated_edge_is_not_a_cycle ... ok
[INFO] [stdout] test config::tests::test_save_round_trip ... ok
[INFO] [stdout] test config::tests::test_save_at_preserves_unknown_json_keys ... ok
[INFO] [stdout] test config::tests::test_validate_rejects_missing_default_harness ... ok
[INFO] [stdout] test db::tests::test_db_path_under_data_dir ... ok
[INFO] [stdout] test commands::tests::test_step_remove_forced ... ok
[INFO] [stdout] test commands::tests::test_step_remove_non_interactive_requires_force ... ok
[INFO] [stdout] test commands::tests::test_step_out_of_range ... ok
[INFO] [stdout] test commands::tests::test_step_reset ... ok
[INFO] [stdout] test db::tests::test_cascade_delete ... ok
[INFO] [stdout] test db::tests::test_indexes_exist ... ok
[INFO] [stdout] test db::tests::test_file_based_db ... ok
[INFO] [stdout] test db::tests::test_insert_plan_and_step ... ok
[INFO] [stdout] test db::tests::test_db_file_is_mode_0600 ... ok
[INFO] [stdout] test db::tests::test_migrate_v11_adds_run_lock_columns ... ok
[INFO] [stdout] test db::tests::test_migrate_v11_backfills_execution_logs ... ok
[INFO] [stdout] test db::tests::test_migration_v14_adds_context_prepend_column ... ok
[INFO] [stdout] test db::tests::test_migrate_v11_idempotent ... ok
[INFO] [stdout] test db::tests::test_migration_idempotent ... ok
[INFO] [stdout] test db::tests::test_migrate_v12_idempotent ... ok
[INFO] [stdout] test db::tests::test_migrate_v12_backfills_change_policy ... ok
[INFO] [stdout] test db::tests::test_migrate_v7_dedupes_existing_rows ... ok
[INFO] [stdout] test db::tests::test_migration_v16_runs_clean_on_fresh_db ... ok
[INFO] [stdout] test db::tests::test_migration_v13_adds_tags_column ... ok
[INFO] [stdout] test db::tests::test_migration_v15_adds_source_branch_and_stash_sha_columns ... ok
[INFO] [stdout] test db::tests::test_migration_v16_adds_questions_enabled_and_step_questions ... ok
[INFO] [stdout] test db::tests::test_migration_v17_adds_parent_tui_pid_to_run_locks ... ok
[INFO] [stdout] test db::tests::test_migration_v18_adds_pause_requested_to_plans ... ok
[INFO] [stdout] test db::tests::test_migration_v19_adds_last_run_branch_to_plans ... ok
[INFO] [stdout] test db::tests::test_migration_v26_runs_clean_on_fresh_db ... ok
[INFO] [stdout] test db::tests::test_migration_v20_adds_last_run_started_at_to_plans ... ok
[INFO] [stdout] test db::tests::test_migration_v21_drops_plan_prompt_wrap_columns ... ok
[INFO] [stdout] test db::tests::test_migration_v22_collapses_project_settings_prompt_columns ... ok
[INFO] [stdout] test db::tests::test_migration_v23_adds_skip_bridge_columns_to_plans ... ok
[INFO] [stdout] test db::tests::test_migration_v27_runs_clean_on_fresh_db ... ok
[INFO] [stdout] test db::tests::test_migration_v25_adds_short_id_and_step_dependencies ... ok
[INFO] [stdout] test db::tests::test_migration_v32_runs_clean_on_fresh_db ... ok
[INFO] [stdout] test db::tests::test_migration_v27_adds_review_columns_to_plans_and_steps ... ok
[INFO] [stdout] test db::tests::test_migration_v26_cuts_step_questions_over_to_interruptions ... ok
[INFO] [stdout] test db::tests::test_migration_v29_adds_corrective_step_request_bridge ... ok
[INFO] [stdout] test db::tests::test_migration_v30_adds_max_review_corrections_to_plans ... ok
[INFO] [stdout] test db::tests::test_migration_v33_runs_clean_on_fresh_db ... ok
[INFO] [stdout] test db::tests::test_migration_v31_enforces_plan_local_step_dependencies ... ok
[INFO] [stdout] test db::tests::test_migration_v32_preserves_rows_and_keeps_duplicate_attempts_allowed ... ok
[INFO] [stdout] test db::tests::test_migration_v33_adds_cycle_index_column ... ok
[INFO] [stdout] test db::tests::test_open_memory_creates_schema ... ok
[INFO] [stdout] test db::tests::test_migration_v36_drops_questions_enabled_column ... ok
[INFO] [stdout] test db::tests::test_migration_v35_adds_human_approved_to_corrective_requests ... ok
[INFO] [stdout] test db::tests::test_plan_dependencies_cascade_delete ... ok
[INFO] [stdout] test db::tests::test_plan_dependencies_table_and_check_constraint ... ok
[INFO] [stdout] test db::tests::test_migration_v37_drops_retry_strategy_and_squash_columns ... ok
[INFO] [stdout] test db::tests::test_migration_v39_rejects_step_plan_moves_that_break_dependencies ... ok
[INFO] [stdout] test db::tests::with_tx_uses_immediate_transaction_behavior ... ok
[INFO] [stdout] test db::tests::test_migration_v40_enforces_corrective_step_pointers ... ok
[INFO] [stdout] test db::tests::test_plan_harness_column_exists ... ok
[INFO] [stdout] test db::tests::test_step_hooks_unique_index_enforced ... ok
[INFO] [stdout] test db::tests::with_tx_nested_error_rolls_back_only_savepoint ... ok
[INFO] [stdout] test db::tests::test_unique_constraints ... ok
[INFO] [stdout] test db::tests::test_tables_exist ... ok
[INFO] [stdout] test db::tests::with_tx_allows_nested_savepoint_commit ... ok
[INFO] [stdout] test executor::tests::test_build_chunk_emitters_carries_seq_and_max_bytes ... ok
[INFO] [stdout] test executor::tests::test_build_chunk_emitters_returns_none_when_cfg_is_none ... ok
[INFO] [stdout] test executor::tests::test_abort_before_pre_log_persists_attempts_and_log ... ok
[INFO] [stderr] Resetting step #1 will revert 1 ralph commit (61f5764f) on branch 'master' (per-iteration + skip-WIP). This adds revert commit(s). Continue? [y/N] Resetting step #1 will revert 1 ralph commit (61f5764f) on branch 'master' (per-iteration + skip-WIP). This adds revert commit(s). Continue? [y/N]   Prompt (512 of 1797 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmp4ei7zM`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Own commit
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Own commit
[INFO] [stderr]     
[INFO] [stderr]     ## Post-harness validation
[INFO] [stderr]     
[INFO] [stderr]     After you return, ralph will run these commands as validation — you don't
[INFO] [stderr]     need to run them yourself:
[INFO] [stderr]     
[INFO] [stderr]     ```
[INFO] [stderr]     test -f committed.txt && test -f dirty.txt
[INFO] [stderr]     ```
[INFO] [stderr]     
[INFO] [stderr]     If you want to sanity-check your changes before returning, feel free — but
[INFO] [stderr]     ralph will re-run them regardless, so a passing run inside your session
[INFO] [stderr]     doesn't skip ralph's c
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test executor::tests::test_auto_blocker_body_diagnostic_reads_are_not_silently_defaulted ... ok
[INFO] [stdout] test executor::tests::test_auto_blocker_body_truncates_when_attempts_exceed_cap ... ok
[INFO] [stdout] test executor::tests::test_attempt_cancelled_event_payload_from_exec_ctx ... ok
[INFO] [stderr]   Prompt (512 of 1377 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpH24Bej`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Step
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Step
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Step
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]       - The plan description and step
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1781 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmp9GeoTE`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Acc
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Acc
[INFO] [stderr]     
[INFO] [stderr]     ## Post-harness validation
[INFO] [stderr]     
[INFO] [stderr]     After you return, ralph will run these commands as validation — you don't
[INFO] [stderr]     need to run them yourself:
[INFO] [stderr]     
[INFO] [stderr]     ```
[INFO] [stderr]     test "$(wc -l < /tmp/.tmp9GeoTE/acc.txt)" -eq 2
[INFO] [stderr]     ```
[INFO] [stderr]     
[INFO] [stderr]     If you want to sanity-check your changes before returning, feel free — but
[INFO] [stderr]     ralph will re-run them regardless, so a passing run inside your session
[INFO] [stderr]     doesn't skip ralph's check. Pre
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1377 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpG1V2Pa`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Step
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Step
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Step
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]       - The plan description and step
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1377 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpjJXEf2`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Step
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Step
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Step
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]       - The plan description and step
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1987 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmp9GeoTE`
[INFO] [stderr]     
[INFO] [stderr]     # Retry Context
[INFO] [stderr]     
[INFO] [stderr]     This is attempt 2 of 2 for this step. The previous attempt failed.
[INFO] [stderr]     
[INFO] [stderr]     Previous failure: tests failed.
[INFO] [stderr]     
[INFO] [stderr]     ## Previous Test Output
[INFO] [stderr]     
[INFO] [stderr]     ```
[INFO] [stderr]     test "$(wc -l < /tmp/.tmp9GeoTE/acc.txt)" -eq 2: FAIL
[INFO] [stderr]     ```
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Acc
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Acc
[INFO] [stderr]     
[INFO] [stderr]     ## Post-harness validation
[INFO] [stderr]     
[INFO] [stderr]     After you return, ralph will run these commands as validation — you don't
[INFO] [stderr]     need to run them yourself:
[INFO] [stderr]     
[INFO] [stderr]     ```
[INFO] [stderr]     test "$(wc -l < /tmp/.tmp
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1377 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpjVmci3`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Step
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Step
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Step
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]       - The plan description and step
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test executor::tests::test_agent_commit_with_dirty_tree_is_uncommitted_before_success_commit ... ok
[INFO] [stderr]   Prompt (512 of 1377 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmp4HKuBU`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Step
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Step
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Step
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]       - The plan description and step
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test executor::tests::test_default_step_with_no_changes_still_fails ... ok
[INFO] [stdout] test executor::tests::test_disk_space_gate_raises_recoverable_blocker ... ok
[INFO] [stdout] test executor::tests::test_commit_failure_terminal_reason ... ok
[INFO] [stderr]   Prompt (512 of 1395 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmp85K86B`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Phase Step
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Phase Step
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Phase Step
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]       - The plan des
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1743 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmp4HKuBU`
[INFO] [stderr]     
[INFO] [stderr]     # Retry Context
[INFO] [stderr]     
[INFO] [stderr]     This is attempt 2 of 2 for this step. The previous attempt failed.
[INFO] [stderr]     
[INFO] [stderr]     Previous failure: commit rejected by pre-commit hook: git commit failed. Fix the lint/style issues reported by the hook..
[INFO] [stderr]     
[INFO] [stderr]     ## Previous Test Output
[INFO] [stderr]     
[INFO] [stderr]     ```
[INFO] [stderr]     [Commit hook output]
[INFO] [stderr]     commit rejected by pre-commit hook: git commit failed. Fix the lint/style issues reported by the hook.
[INFO] [stderr]     ```
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Step
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Ste
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test executor::tests::test_commit_hook_failure_exhaustion_raises_blocker ... ok
[INFO] [stdout] test executor::tests::test_failure_reason_mappings ... ok
[INFO] [stderr]   Prompt (512 of 1781 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpYXvB9x`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Acc
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Acc
[INFO] [stderr]     
[INFO] [stderr]     ## Post-harness validation
[INFO] [stderr]     
[INFO] [stderr]     After you return, ralph will run these commands as validation — you don't
[INFO] [stderr]     need to run them yourself:
[INFO] [stderr]     
[INFO] [stderr]     ```
[INFO] [stderr]     test "$(wc -l < /tmp/.tmpYXvB9x/acc.txt)" -eq 2
[INFO] [stderr]     ```
[INFO] [stderr]     
[INFO] [stderr]     If you want to sanity-check your changes before returning, feel free — but
[INFO] [stderr]     ralph will re-run them regardless, so a passing run inside your session
[INFO] [stderr]     doesn't skip ralph's check. Pre
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1781 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmp5LWgWp`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Acc
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Acc
[INFO] [stderr]     
[INFO] [stderr]     ## Post-harness validation
[INFO] [stderr]     
[INFO] [stderr]     After you return, ralph will run these commands as validation — you don't
[INFO] [stderr]     need to run them yourself:
[INFO] [stderr]     
[INFO] [stderr]     ```
[INFO] [stderr]     test "$(wc -l < /tmp/.tmp5LWgWp/acc.txt)" -eq 2
[INFO] [stderr]     ```
[INFO] [stderr]     
[INFO] [stderr]     If you want to sanity-check your changes before returning, feel free — but
[INFO] [stderr]     ralph will re-run them regardless, so a passing run inside your session
[INFO] [stderr]     doesn't skip ralph's check. Pre
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test executor::tests::test_at_most_one_commit_per_step ... ok
[INFO] [stdout] test executor::tests::test_finalize_paused_for_question_is_transactional ... ok
[INFO] [stdout] test executor::tests::test_execute_step_writes_phase_transitions ... ok
[INFO] [stdout] test executor::tests::test_finalize_skipped_warning_matches_dependency_semantics ... ok
[INFO] [stderr]   Prompt (512 of 1987 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmp5LWgWp`
[INFO] [stderr]     
[INFO] [stderr]     # Retry Context
[INFO] [stderr]     
[INFO] [stderr]     This is attempt 2 of 2 for this step. The previous attempt failed.
[INFO] [stderr]     
[INFO] [stderr]     Previous failure: tests failed.
[INFO] [stderr]     
[INFO] [stderr]     ## Previous Test Output
[INFO] [stderr]     
[INFO] [stderr]     ```
[INFO] [stderr]     test "$(wc -l < /tmp/.tmp5LWgWp/acc.txt)" -eq 2: FAIL
[INFO] [stderr]     ```
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Acc
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Acc
[INFO] [stderr]     
[INFO] [stderr]     ## Post-harness validation
[INFO] [stderr]     
[INFO] [stderr]     After you return, ralph will run these commands as validation — you don't
[INFO] [stderr]     need to run them yourself:
[INFO] [stderr]     
[INFO] [stderr]     ```
[INFO] [stderr]     test "$(wc -l < /tmp/.tmp
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test executor::tests::test_commit_hook_rejection_is_retryable ... ok
[INFO] [stderr]   Prompt (512 of 1377 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpOFfn60`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Step
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Step
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Step
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]       - The plan description and step
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1377 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpigRMwV`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Step
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Step
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Step
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]       - The plan description and step
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test executor::tests::test_fast_completed_attempt_clears_unconsumed_db_skip_request ... ok
[INFO] [stdout] test executor::tests::test_failed_attempt_leaves_dirty_tree_for_next_attempt ... ok
[INFO] [stdout] test executor::tests::test_finalize_skipped_discard_records_rolled_back ... ok
[INFO] [stdout] test executor::tests::test_existing_trailer_commit_recovered_without_reimplementation ... ok
[INFO] [stderr]   Prompt (512 of 1377 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpBJleZh`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Step
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Step
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Step
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]       - The plan description and step
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test executor::tests::test_harness_failure_exhaustion_still_terminal ... ok
[INFO] [stdout] test executor::tests::test_failing_then_passing_attempts_produce_single_commit ... ok
[INFO] [stderr]   Prompt (512 of 1377 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpuKlwvO`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Step
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Step
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Step
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]       - The plan description and step
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1374 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpfDcs7g`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Acc
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Acc
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Acc
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]       - The plan description and step acc
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1781 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpRXFf5V`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Acc
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Acc
[INFO] [stderr]     
[INFO] [stderr]     ## Post-harness validation
[INFO] [stderr]     
[INFO] [stderr]     After you return, ralph will run these commands as validation — you don't
[INFO] [stderr]     need to run them yourself:
[INFO] [stderr]     
[INFO] [stderr]     ```
[INFO] [stderr]     test "$(wc -l < /tmp/.tmpRXFf5V/acc.txt)" -eq 2
[INFO] [stderr]     ```
[INFO] [stderr]     
[INFO] [stderr]     If you want to sanity-check your changes before returning, feel free — but
[INFO] [stderr]     ralph will re-run them regardless, so a passing run inside your session
[INFO] [stderr]     doesn't skip ralph's check. Pre
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1781 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpH8kYlC`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Acc
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Acc
[INFO] [stderr]     
[INFO] [stderr]     ## Post-harness validation
[INFO] [stderr]     
[INFO] [stderr]     After you return, ralph will run these commands as validation — you don't
[INFO] [stderr]     need to run them yourself:
[INFO] [stderr]     
[INFO] [stderr]     ```
[INFO] [stderr]     test "$(wc -l < /tmp/.tmpH8kYlC/acc.txt)" -eq 2
[INFO] [stderr]     ```
[INFO] [stderr]     
[INFO] [stderr]     If you want to sanity-check your changes before returning, feel free — but
[INFO] [stderr]     ralph will re-run them regardless, so a passing run inside your session
[INFO] [stderr]     doesn't skip ralph's check. Pre
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1377 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpNZKMSw`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Step
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Step
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Step
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]       - The plan description and step
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1377 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpgVxAQU`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Step
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Step
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Step
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]       - The plan description and step
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1564 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpfDcs7g`
[INFO] [stderr]     
[INFO] [stderr]     # Retry Context
[INFO] [stderr]     
[INFO] [stderr]     This is attempt 2 of 2 for this step. The previous attempt failed.
[INFO] [stderr]     
[INFO] [stderr]     Previous failure: harness exited non-zero.
[INFO] [stderr]     
[INFO] [stderr]     ## Previous Test Output
[INFO] [stderr]     
[INFO] [stderr]     ```
[INFO] [stderr]     harness exited with code 1
[INFO] [stderr]     ```
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Acc
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Acc
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Acc
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarifi
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1455 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpuKlwvO`
[INFO] [stderr]     
[INFO] [stderr]     ## Resolved interruptions
[INFO] [stderr]     
[INFO] [stderr]     > **question**
[INFO] [stderr]     > Which DB?
[INFO] [stderr]     >
[INFO] [stderr]     > Resolution: SQLite
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Step
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Step
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Step
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whet
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1987 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpH8kYlC`
[INFO] [stderr]     
[INFO] [stderr]     # Retry Context
[INFO] [stderr]     
[INFO] [stderr]     This is attempt 2 of 2 for this step. The previous attempt failed.
[INFO] [stderr]     
[INFO] [stderr]     Previous failure: tests failed.
[INFO] [stderr]     
[INFO] [stderr]     ## Previous Test Output
[INFO] [stderr]     
[INFO] [stderr]     ```
[INFO] [stderr]     test "$(wc -l < /tmp/.tmpH8kYlC/acc.txt)" -eq 2: FAIL
[INFO] [stderr]     ```
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Acc
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Acc
[INFO] [stderr]     
[INFO] [stderr]     ## Post-harness validation
[INFO] [stderr]     
[INFO] [stderr]     After you return, ralph will run these commands as validation — you don't
[INFO] [stderr]     need to run them yourself:
[INFO] [stderr]     
[INFO] [stderr]     ```
[INFO] [stderr]     test "$(wc -l < /tmp/.tmp
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 2274 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpRXFf5V`
[INFO] [stderr]     
[INFO] [stderr]     # Retry Context
[INFO] [stderr]     
[INFO] [stderr]     This is attempt 2 of 2 for this step. The previous attempt failed.
[INFO] [stderr]     
[INFO] [stderr]     Previous failure: agent committed its own work instead of leaving changes for ralph (worktree clean, HEAD advanced).
[INFO] [stderr]     
[INFO] [stderr]     ## Previous Test Output
[INFO] [stderr]     
[INFO] [stderr]     ```
[INFO] [stderr]     no changes (worktree clean, but HEAD advanced during attempt — agent appears to have committed). Ralph owns commits per step; remove any 'git commit' / 'git add' instructions from the step description.
[INFO] [stderr]     test
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test executor::tests::test_harness_failure_preserves_dirty_tree ... ok
[INFO] [stdout] test executor::tests::test_interruption_bridge_zero_budget_then_cross_process_resolve_requeues ... ok
[INFO] [stdout] test executor::tests::test_large_harness_output_does_not_deadlock ... ok
[INFO] [stderr]   Prompt (512 of 1741 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpg8gVpx`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Step
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Step
[INFO] [stderr]     
[INFO] [stderr]     ## Post-harness validation
[INFO] [stderr]     
[INFO] [stderr]     After you return, ralph will run these commands as validation — you don't
[INFO] [stderr]     need to run them yourself:
[INFO] [stderr]     
[INFO] [stderr]     ```
[INFO] [stderr]     true
[INFO] [stderr]     ```
[INFO] [stderr]     
[INFO] [stderr]     If you want to sanity-check your changes before returning, feel free — but
[INFO] [stderr]     ralph will re-run them regardless, so a passing run inside your session
[INFO] [stderr]     doesn't skip ralph's check. Prefer using the time to complete the work.
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test executor::tests::test_keep_strategy_preserves_dirty_tree_between_attempts ... ok
[INFO] [stdout] test executor::tests::test_keep_agent_committed_clean_single_final_commit ... ok
[INFO] [stdout] test executor::tests::test_natural_exit_with_pending_skip_resolves_to_skip_not_abort ... ok
[INFO] [stderr]   Prompt (512 of 1377 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpsVKGiu`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Step
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Step
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Step
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]       - The plan description and step
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1377 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpJY0vAR`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Step
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Step
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Step
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]       - The plan description and step
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1377 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmp8IWJ6y`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Step
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Step
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Step
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]       - The plan description and step
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test executor::tests::test_abort_kills_harness_process_group ... FAILED
[INFO] [stdout] test executor::tests::test_no_changes_exhaustion_still_terminal ... ok
[INFO] [stderr]   Prompt (512 of 1383 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpw7t3eL`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Review
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Review
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Review
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]       - The plan description and
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test executor::tests::test_no_changes_reason ... ok
[INFO] [stdout] test executor::tests::test_nonzero_exit_optional_policy_does_not_false_green ... ok
[INFO] [stdout] test executor::tests::test_non_skip_terminal_clears_pending_skip_state ... ok
[INFO] [stdout] test executor::tests::test_no_questions_proceeds_to_commit_normally ... ok
[INFO] [stderr]   Prompt (512 of 1741 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpuitvge`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Step
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Step
[INFO] [stderr]     
[INFO] [stderr]     ## Post-harness validation
[INFO] [stderr]     
[INFO] [stderr]     After you return, ralph will run these commands as validation — you don't
[INFO] [stderr]     need to run them yourself:
[INFO] [stderr]     
[INFO] [stderr]     ```
[INFO] [stderr]     true
[INFO] [stderr]     ```
[INFO] [stderr]     
[INFO] [stderr]     If you want to sanity-check your changes before returning, feel free — but
[INFO] [stderr]     ralph will re-run them regardless, so a passing run inside your session
[INFO] [stderr]     doesn't skip ralph's check. Prefer using the time to complete the work.
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1377 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpPioxZc`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Step
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stdout] test executor::tests::test_graceful_shutdown_kills_sigterm_resistant_descendant ... FAILED
[INFO] [stderr]     → #1. [PENDING] Step
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Step
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]       - The plan description and step
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1377 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpskKnhe`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Step
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Step
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Step
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]       - The plan description and step
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1567 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpPioxZc`
[INFO] [stderr]     
[INFO] [stderr]     # Retry Context
[INFO] [stderr]     
[INFO] [stderr]     This is attempt 2 of 3 for this step. The previous attempt failed.
[INFO] [stderr]     
[INFO] [stderr]     Previous failure: harness exited non-zero.
[INFO] [stderr]     
[INFO] [stderr]     ## Previous Test Output
[INFO] [stderr]     
[INFO] [stderr]     ```
[INFO] [stderr]     harness exited with code 1
[INFO] [stderr]     ```
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Step
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Step
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Step
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clar
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test executor::tests::test_nonzero_exit_required_policy_retries_and_fails ... ok
[INFO] [stderr]   Prompt (512 of 1567 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpPioxZc`
[INFO] [stderr]     
[INFO] [stderr]     # Retry Context
[INFO] [stderr]     
[INFO] [stderr]     This is attempt 3 of 3 for this step. The previous attempt failed.
[INFO] [stderr]     
[INFO] [stderr]     Previous failure: harness exited non-zero.
[INFO] [stderr]     
[INFO] [stderr]     ## Previous Test Output
[INFO] [stderr]     
[INFO] [stderr]     ```
[INFO] [stderr]     harness exited with code 1
[INFO] [stderr]     ```
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Step
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Step
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Step
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clar
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test executor::tests::test_nonzero_exit_with_diff_and_passing_tests_still_fails ... ok
[INFO] [stderr]   Prompt (512 of 1748 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpErvQXF`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Review
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Review
[INFO] [stderr]     
[INFO] [stderr]     ## Post-harness validation
[INFO] [stderr]     
[INFO] [stderr]     After you return, ralph will run these commands as validation — you don't
[INFO] [stderr]     need to run them yourself:
[INFO] [stderr]     
[INFO] [stderr]     ```
[INFO] [stderr]     false
[INFO] [stderr]     ```
[INFO] [stderr]     
[INFO] [stderr]     If you want to sanity-check your changes before returning, feel free — but
[INFO] [stderr]     ralph will re-run them regardless, so a passing run inside your session
[INFO] [stderr]     doesn't skip ralph's check. Prefer using the time to complete the w
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1383 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmp4HQ2rH`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Review
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Review
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Review
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]       - The plan description and
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test executor::tests::test_nonzero_exit_retries_up_to_budget ... ok
[INFO] [stderr]   Prompt (512 of 1747 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmp2f6ipN`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Review
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Review
[INFO] [stderr]     
[INFO] [stderr]     ## Post-harness validation
[INFO] [stderr]     
[INFO] [stderr]     After you return, ralph will run these commands as validation — you don't
[INFO] [stderr]     need to run them yourself:
[INFO] [stderr]     
[INFO] [stderr]     ```
[INFO] [stderr]     true
[INFO] [stderr]     ```
[INFO] [stderr]     
[INFO] [stderr]     If you want to sanity-check your changes before returning, feel free — but
[INFO] [stderr]     ralph will re-run them regardless, so a passing run inside your session
[INFO] [stderr]     doesn't skip ralph's check. Prefer using the time to complete the wo
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1383 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpuZOEOU`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Review
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Review
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Review
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]       - The plan description and
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1747 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpjPNiaL`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Review
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Review
[INFO] [stderr]     
[INFO] [stderr]     ## Post-harness validation
[INFO] [stderr]     
[INFO] [stderr]     After you return, ralph will run these commands as validation — you don't
[INFO] [stderr]     need to run them yourself:
[INFO] [stderr]     
[INFO] [stderr]     ```
[INFO] [stderr]     true
[INFO] [stderr]     ```
[INFO] [stderr]     
[INFO] [stderr]     If you want to sanity-check your changes before returning, feel free — but
[INFO] [stderr]     ralph will re-run them regardless, so a passing run inside your session
[INFO] [stderr]     doesn't skip ralph's check. Prefer using the time to complete the wo
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test executor::tests::test_optional_step_no_changes_no_tests_completes ... ok
[INFO] [stdout] test executor::tests::test_parse_harness_json_embedded_in_output ... ok
[INFO] [stdout] test executor::tests::test_parse_harness_json_full ... ok
[INFO] [stdout] test executor::tests::test_parse_harness_json_no_json ... ok
[INFO] [stdout] test executor::tests::test_parse_harness_json_partial ... ok
[INFO] [stdout] test executor::tests::test_parse_harness_json_unknown_keys_only ... ok
[INFO] [stdout] test executor::tests::test_optional_step_no_changes_failing_tests_fails ... ok
[INFO] [stderr]   Prompt (512 of 1756 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpzReFa4`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Implement
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Implement
[INFO] [stderr]     
[INFO] [stderr]     ## Post-harness validation
[INFO] [stderr]     
[INFO] [stderr]     After you return, ralph will run these commands as validation — you don't
[INFO] [stderr]     need to run them yourself:
[INFO] [stderr]     
[INFO] [stderr]     ```
[INFO] [stderr]     true
[INFO] [stderr]     ```
[INFO] [stderr]     
[INFO] [stderr]     If you want to sanity-check your changes before returning, feel free — but
[INFO] [stderr]     ralph will re-run them regardless, so a passing run inside your session
[INFO] [stderr]     doesn't skip ralph's check. Prefer using the time to complete
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test executor::tests::test_optional_step_no_changes_passing_tests_completes ... ok
[INFO] [stdout] test executor::tests::test_optional_step_agent_committed_no_tests_fails ... ok
[INFO] [stdout] test executor::tests::test_optional_step_agent_committed_passing_tests_fails ... ok
[INFO] [stderr]   Prompt (512 of 1741 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmp7266tG`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Step
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Step
[INFO] [stderr]     
[INFO] [stderr]     ## Post-harness validation
[INFO] [stderr]     
[INFO] [stderr]     After you return, ralph will run these commands as validation — you don't
[INFO] [stderr]     need to run them yourself:
[INFO] [stderr]     
[INFO] [stderr]     ```
[INFO] [stderr]     true
[INFO] [stderr]     ```
[INFO] [stderr]     
[INFO] [stderr]     If you want to sanity-check your changes before returning, feel free — but
[INFO] [stderr]     ralph will re-run them regardless, so a passing run inside your session
[INFO] [stderr]     doesn't skip ralph's check. Prefer using the time to complete the work.
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test executor::tests::test_park_step_worktree_for_interruption_preserves_pre_existing_untracked ... ok
[INFO] [stdout] test executor::tests::test_optional_step_with_changes_commits_normally ... ok
[INFO] [stdout] test executor::tests::test_prompt_display_full_with_verbose ... ok
[INFO] [stdout] test executor::tests::test_prompt_display_short_prompt_no_truncation_marker ... ok
[INFO] [stdout] test executor::tests::test_prompt_display_strips_trailing_whitespace ... ok
[INFO] [stdout] test executor::tests::test_prompt_display_truncates_to_512_by_default ... ok
[INFO] [stderr]   Prompt (512 of 1781 chars):
[INFO] [stdout] test executor::tests::test_paused_for_question_no_diff_skips_tests_and_commit ... ok
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpHn9TsX`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Acc
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Acc
[INFO] [stderr]     
[INFO] [stderr]     ## Post-harness validation
[INFO] [stderr]     
[INFO] [stderr]     After you return, ralph will run these commands as validation — you don't
[INFO] [stderr]     need to run them yourself:
[INFO] [stderr]     
[INFO] [stderr]     ```
[INFO] [stderr]     test "$(wc -l < /tmp/.tmpHn9TsX/acc.txt)" -eq 2
[INFO] [stderr]     ```
[INFO] [stderr]     
[INFO] [stderr]     If you want to sanity-check your changes before returning, feel free — but
[INFO] [stderr]     ralph will re-run them regardless, so a passing run inside your session
[INFO] [stderr]     doesn't skip ralph's check. Pre
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1811 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpgqefGN`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Add the thing
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Add the thing
[INFO] [stderr]     
[INFO] [stderr]     ## Post-harness validation
[INFO] [stderr]     
[INFO] [stderr]     After you return, ralph will run these commands as validation — you don't
[INFO] [stderr]     need to run them yourself:
[INFO] [stderr]     
[INFO] [stderr]     ```
[INFO] [stderr]     test "$(wc -l < /tmp/.tmpgqefGN/acc.txt)" -eq 1
[INFO] [stderr]     ```
[INFO] [stderr]     
[INFO] [stderr]     If you want to sanity-check your changes before returning, feel free — but
[INFO] [stderr]     ralph will re-run them regardless, so a passing run inside your session
[INFO] [stderr]     doesn't ski
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1377 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpoTPsy4`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Step
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Step
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Step
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]       - The plan description and step
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1447 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpBa03Az`
[INFO] [stderr]     
[INFO] [stderr]     ## Resolved interruptions
[INFO] [stderr]     
[INFO] [stderr]     > **question**
[INFO] [stderr]     > old?
[INFO] [stderr]     >
[INFO] [stderr]     > Resolution: yes
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Step
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Step
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Step
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1987 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpHn9TsX`
[INFO] [stderr]     
[INFO] [stderr]     # Retry Context
[INFO] [stderr]     
[INFO] [stderr]     This is attempt 2 of 2 for this step. The previous attempt failed.
[INFO] [stderr]     
[INFO] [stderr]     Previous failure: tests failed.
[INFO] [stderr]     
[INFO] [stderr]     ## Previous Test Output
[INFO] [stderr]     
[INFO] [stderr]     ```
[INFO] [stderr]     test "$(wc -l < /tmp/.tmpHn9TsX/acc.txt)" -eq 2: FAIL
[INFO] [stderr]     ```
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Acc
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Acc
[INFO] [stderr]     
[INFO] [stderr]     ## Post-harness validation
[INFO] [stderr]     
[INFO] [stderr]     After you return, ralph will run these commands as validation — you don't
[INFO] [stderr]     need to run them yourself:
[INFO] [stderr]     
[INFO] [stderr]     ```
[INFO] [stderr]     test "$(wc -l < /tmp/.tmp
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1377 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpWv6O1W`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Step
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Step
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Step
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]       - The plan description and step
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test executor::tests::test_pre_exhausted_step_raises_blocker_instead_of_bailing ... ok
[INFO] [stdout] test executor::tests::test_pre_step_hook_failure_terminal_reason ... ok
[INFO] [stderr]   Prompt (512 of 1377 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpoHwEwh`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Step
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Step
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Step
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]       - The plan description and step
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test executor::tests::test_resolve_step_num_errors_when_step_not_in_plan_snapshot ... ok
[INFO] [stderr]   Prompt (512 of 1781 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpqKqQ6Q`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Acc
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Acc
[INFO] [stderr]     
[INFO] [stderr]     ## Post-harness validation
[INFO] [stderr]     
[INFO] [stderr]     After you return, ralph will run these commands as validation — you don't
[INFO] [stderr]     need to run them yourself:
[INFO] [stderr]     
[INFO] [stderr]     ```
[INFO] [stderr]     test "$(wc -l < /tmp/.tmpqKqQ6Q/acc.txt)" -eq 1
[INFO] [stderr]     ```
[INFO] [stderr]     
[INFO] [stderr]     If you want to sanity-check your changes before returning, feel free — but
[INFO] [stderr]     ralph will re-run them regardless, so a passing run inside your session
[INFO] [stderr]     doesn't skip ralph's check. Pre
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test executor::tests::test_set_step_attempts ... ok
[INFO] [stdout] test executor::tests::test_question_for_different_attempt_does_not_pause ... ok
[INFO] [stdout] test executor::tests::test_paused_for_question_rolls_back_diff ... ok
[INFO] [stderr]   Prompt (512 of 1412 chars):
[INFO] [stderr]     # Plan: demo-plan
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpctjYFe`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Wire the thing
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Wire the thing
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Wire the thing
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test executor::tests::test_per_iteration_commit_subject_trailers_after_test ... ok
[INFO] [stdout] test executor::tests::test_required_step_agent_committed_emits_hint ... ok
[INFO] [stdout] test executor::tests::test_step_outcome_variants ... ok
[INFO] [stdout] test executor::tests::test_review_disabled_fast_path_no_spawn_marks_disabled_complete ... ok
[INFO] [stdout] test executor::tests::test_passing_attempt_after_failing_attempt_makes_single_commit ... ok
[INFO] [stdout] test executor::tests::test_truncate_tail_bytes_above_cap_keeps_tail_and_marks_elision ... ok
[INFO] [stdout] test executor::tests::test_truncate_tail_bytes_below_cap_is_identity ... ok
[INFO] [stdout] test executor::tests::test_truncate_tail_bytes_tiny_cap_is_hard_cap ... ok
[INFO] [stdout] test executor::tests::test_truncate_tail_bytes_utf8_boundary_safe ... ok
[INFO] [stdout] test executor::tests::test_skip_changes_commit_makes_wip_commit_with_trailer ... ok
[INFO] [stdout] test executor::tests::test_wait_with_timeout_and_abort_emits_harness_chunks ... ok
[INFO] [stdout] test executor::tests::test_wait_with_timeout_and_abort_no_emit_when_emitters_none ... ok
[INFO] [stderr]   Prompt (512 of 1782 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpNn3vVl`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Acc
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Acc
[INFO] [stderr]     
[INFO] [stderr]     ## Post-harness validation
[INFO] [stderr]     
[INFO] [stderr]     After you return, ralph will run these commands as validation — you don't
[INFO] [stderr]     need to run them yourself:
[INFO] [stderr]     
[INFO] [stderr]     ```
[INFO] [stderr]     test "$(wc -l < /tmp/.tmpNn3vVl/acc.txt)" -eq 99
[INFO] [stderr]     ```
[INFO] [stderr]     
[INFO] [stderr]     If you want to sanity-check your changes before returning, feel free — but
[INFO] [stderr]     ralph will re-run them regardless, so a passing run inside your session
[INFO] [stderr]     doesn't skip ralph's check. Pr
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1377 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpMHeXxX`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Step
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Step
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Step
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]       - The plan description and step
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test executor::tests::test_skip_kills_harness_and_marks_skipped ... ok
[INFO] [stdout] test export::tests::test_build_exported_plan_excludes_internal_fields ... ok
[INFO] [stderr]   Prompt (512 of 1782 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpeiqSUA`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Acc
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Acc
[INFO] [stderr]     
[INFO] [stderr]     ## Post-harness validation
[INFO] [stderr]     
[INFO] [stderr]     After you return, ralph will run these commands as validation — you don't
[INFO] [stderr]     need to run them yourself:
[INFO] [stderr]     
[INFO] [stderr]     ```
[INFO] [stderr]     test "$(wc -l < /tmp/.tmpeiqSUA/acc.txt)" -eq 99
[INFO] [stderr]     ```
[INFO] [stderr]     
[INFO] [stderr]     If you want to sanity-check your changes before returning, feel free — but
[INFO] [stderr]     ralph will re-run them regardless, so a passing run inside your session
[INFO] [stderr]     doesn't skip ralph's check. Pr
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1412 chars):
[INFO] [stderr]     # Plan: demo-plan
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpnqtG6K`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Wire the thing
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Wire the thing
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Wire the thing
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test export::tests::test_export_branched_plan_emits_depends_on ... ok
[INFO] [stdout] test executor::tests::test_test_fail_exhaustion_fires_retry_exhausted_hook_label ... ok
[INFO] [stdout] test export::tests::test_export_emits_review_toggles_and_strips_runtime_state ... ok
[INFO] [stderr]   Prompt (512 of 1989 chars):
[INFO] [stderr]     # Plan: slug
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpeiqSUA`
[INFO] [stderr]     
[INFO] [stderr]     # Retry Context
[INFO] [stderr]     
[INFO] [stderr]     This is attempt 2 of 2 for this step. The previous attempt failed.
[INFO] [stderr]     
[INFO] [stderr]     Previous failure: tests failed.
[INFO] [stderr]     
[INFO] [stderr]     ## Previous Test Output
[INFO] [stderr]     
[INFO] [stderr]     ```
[INFO] [stderr]     test "$(wc -l < /tmp/.tmpeiqSUA/acc.txt)" -eq 99: FAIL
[INFO] [stderr]     ```
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Acc
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Acc
[INFO] [stderr]     
[INFO] [stderr]     ## Post-harness validation
[INFO] [stderr]     
[INFO] [stderr]     After you return, ralph will run these commands as validation — you don't
[INFO] [stderr]     need to run them yourself:
[INFO] [stderr]     
[INFO] [stderr]     ```
[INFO] [stderr]     test "$(wc -l < /tmp/.tm
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test executor::tests::test_skip_changes_discard_drops_the_work ... ok
[INFO] [stdout] test export::tests::test_export_includes_tags ... ok
[INFO] [stdout] test export::tests::test_export_linear_plan_emits_short_ids_and_real_chain_edges ... ok
[INFO] [stdout] test export::tests::test_export_omits_questions_enabled ... ok
[INFO] [stdout] test export::tests::test_export_plan_not_found ... ok
[INFO] [stdout] test executor::tests::test_test_fail_exhaustion_raises_blocker ... ok
[INFO] [stdout] test executor::tests::test_large_harness_output_truncates_to_cap ... ok
[INFO] [stdout] test export::tests::test_export_plan_to_file ... ok
[INFO] [stdout] test frac_index::tests::test_char_index_invalid_returns_err ... ok
[INFO] [stdout] test frac_index::tests::test_char_index_roundtrip ... ok
[INFO] [stdout] test frac_index::tests::test_frac_index_error_display_mentions_inputs ... ok
[INFO] [stdout] test frac_index::tests::test_initial_key ... ok
[INFO] [stdout] test frac_index::tests::test_key_after ... ok
[INFO] [stdout] test frac_index::tests::test_key_after_empty_returns_empty_key ... ok
[INFO] [stdout] test frac_index::tests::test_key_after_invalid_char_returns_err ... ok
[INFO] [stdout] test frac_index::tests::test_key_before_first_normal_key ... ok
[INFO] [stdout] test frac_index::tests::test_key_between_a_gt_b_returns_invalid_order ... ok
[INFO] [stdout] test frac_index::tests::test_key_between_adjacent_letters ... ok
[INFO] [stdout] test frac_index::tests::test_key_between_both_empty_returns_invalid_order ... ok
[INFO] [stdout] test frac_index::tests::test_key_between_different_lengths ... ok
[INFO] [stdout] test frac_index::tests::test_key_between_empty_a_prefix_path_still_works ... ok
[INFO] [stdout] test frac_index::tests::test_key_between_equal_returns_invalid_order ... ok
[INFO] [stdout] test frac_index::tests::test_key_between_invalid_char_returns_err ... ok
[INFO] [stdout] test frac_index::tests::test_key_between_regression_no_panic_on_bad_inputs ... ok
[INFO] [stdout] test frac_index::tests::test_key_between_repeated_midpoints ... ok
[INFO] [stdout] test frac_index::tests::test_key_between_simple ... ok
[INFO] [stdout] test frac_index::tests::test_key_between_wide_gap ... ok
[INFO] [stdout] test frac_index::tests::test_key_between_zero_prefix_returns_error ... ok
[INFO] [stdout] test export::tests::test_export_preserves_step_order ... ok
[INFO] [stdout] test frac_index::tests::test_key_between_zero_suffix_edge_pairs_return_error ... ok
[INFO] [stdout] test frac_index::tests::test_multiple_insertions_maintain_order ... ok
[INFO] [stdout] test frac_index::tests::test_new_error_variants_display ... ok
[INFO] [stdout] test frac_index::tests::test_repeated_key_before_stays_ordered_and_splittable ... ok
[INFO] [stdout] test export::tests::test_export_resets_step_statuses ... ok
[INFO] [stdout] test git::tests::test_build_iteration_commit_message_subject_and_trailers ... ok
[INFO] [stdout] test git::tests::test_check_ref_format_accepts_valid_names ... ok
[INFO] [stdout] test git::tests::test_check_ref_format_rejects_every_rule ... ok
[INFO] [stdout] test git::tests::test_check_ref_format_slash_edges ... ok
[INFO] [stdout] test git::tests::test_check_revision_arg_rejects_flag_like_values ... ok
[INFO] [stderr]   Prompt (512 of 1412 chars):
[INFO] [stderr]     # Plan: demo-plan
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmpz0xNm2`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Wire the thing
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Wire the thing
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Wire the thing
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test git::tests::test_branch_exists_reports_false_for_missing ... ok
[INFO] [stdout] test git::tests::test_branch_exists_reports_true_for_existing ... ok
[INFO] [stdout] test export::tests::test_export_round_trip_short_ids_stable ... ok
[INFO] [stdout] test export::tests::test_exported_json_excludes_ids_and_timestamps ... ok
[INFO] [stdout] test export::tests::test_exported_json_is_valid ... ok
[INFO] [stdout] test git::tests::test_checkout_branch_existing ... ok
[INFO] [stdout] test git::tests::test_checkout_branch_missing_errors ... ok
[INFO] [stdout] test executor::tests::test_skip_changes_stash_parks_to_stash ... ok
[INFO] [stdout] test git::tests::test_create_and_checkout_branch ... ok
[INFO] [stdout] test git::tests::test_commit_changes ... ok
[INFO] [stdout] test git::tests::test_find_stash_by_message_matches ... ok
[INFO] [stdout] test git::tests::test_get_commit_hash ... ok
[INFO] [stdout] test git::tests::test_get_diff_errors_when_not_a_repo ... ok
[INFO] [stdout] test git::tests::test_git_helpers_are_timeout_bounded ... ok
[INFO] [stdout] test git::tests::test_drop_stash_discards_entry_without_applying ... ok
[INFO] [stdout] test git::tests::test_get_all_changed_files ... ok
[INFO] [stderr]   Prompt (512 of 1412 chars):
[INFO] [stderr]     # Plan: demo-plan
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmplGKDVw`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Wire the thing
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Wire the thing
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Wire the thing
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test git::tests::test_git_error_handling ... ok
[INFO] [stdout] test git::tests::test_create_branch_from_sha ... ok
[INFO] [stdout] test git::tests::test_get_current_branch ... ok
[INFO] [stderr]   Prompt (512 of 1412 chars):
[INFO] [stderr]     # Plan: demo-plan
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `branch`
[INFO] [stderr]     **Project:** `/tmp/.tmplGKDVw`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Wire the thing
[INFO] [stderr]     
[INFO] [stderr]     desc
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Wire the thing
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Wire the thing
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test git::tests::test_has_uncommitted_changes_dirty ... ok
[INFO] [stdout] test git::tests::test_get_diff ... ok
[INFO] [stdout] test git::tests::test_has_uncommitted_changes_clean ... ok
[INFO] [stdout] test git::tests::test_list_stash_untracked_files_empty_when_no_untracked ... ok
[INFO] [stdout] test git::tests::test_list_stash_untracked_files_returns_only_captured_untracked ... ok
[INFO] [stdout] test executor::tests::test_tui_skip_cancel_reenters_same_attempt_no_budget_no_log_row ... ok
[INFO] [stdout] test git::tests::test_park_changes_discard_preserves_pre_existing_untracked ... ok
[INFO] [stdout] test git::tests::test_parse_porcelain_status_rename_and_copy ... ok
[INFO] [stdout] test git::tests::test_parse_porcelain_status_z_empty_is_ok_empty ... ok
[INFO] [stdout] test git::tests::test_park_changes_stash_clean_tree_errors ... ok
[INFO] [stdout] test git::tests::test_merge_sha_clean ... ok
[INFO] [stdout] test git::tests::test_parse_porcelain_status_z_malformed_record_is_error ... ok
[INFO] [stdout] test git::tests::test_parse_porcelain_status_z_truncated_rename_is_error ... ok
[INFO] [stdout] test git::tests::test_parse_porcelain_status_z_unusual_paths ... ok
[INFO] [stdout] test git::tests::test_merge_sha_conflict ... ok
[INFO] [stdout] test git::tests::test_park_changes_commit_trailer_greppable ... ok
[INFO] [stdout] test git::tests::test_remove_untracked_except_tolerates_missing ... ok
[INFO] [stdout] test git::tests::test_remove_untracked_except_preserves_list ... ok
[INFO] [stdout] test git::tests::test_park_changes_stash_label_recoverable ... ok
[INFO] [stdout] test git::tests::test_revert_commit_noop_detection_is_tree_based ... ok
[INFO] [stdout] test git::tests::test_list_skip_wip_commits_newest_first ... ok
[INFO] [stdout] test git::tests::test_reset_hard_to_head_preserves_untracked_files ... ok
[INFO] [stdout] test git::tests::test_reset_hard_to_head_discards_tracked_changes ... ok
[INFO] [stdout] test git::tests::test_review_worktree_drop_cleans_up_synchronously ... ok
[INFO] [stdout] test git::tests::test_review_worktree_production_root_is_private_data_dir ... ok
[INFO] [stdout] test git::tests::test_revision_wrappers_include_pathspec_separator ... ok
[INFO] [stdout] test git::tests::test_parse_skipped_step_trailer_detects_only_real_trailer ... ok
[INFO] [stdout] test git::tests::test_revert_commit_not_on_head ... ok
[INFO] [stdout] test git::tests::test_rollback_changes ... ok
[INFO] [stdout] test git::tests::test_sanitize_commit_subject_collapses_and_caps ... ok
[INFO] [stdout] test git::tests::test_reset_hard_clears_conflicted_stash_apply ... ok
[INFO] [stdout] test git::tests::test_stage_except_propagates_reset_errors ... ok
[INFO] [stdout] test git::tests::test_revert_commit_already_reverted_is_noop ... ok
[INFO] [stdout] test git::tests::test_revert_commit_success ... ok
[INFO] [stdout] test git::tests::test_stage_except_uses_single_batched_reset ... ok
[INFO] [stdout] test git::tests::test_rollback_except_drops_staged_new_files_keeps_preserved ... ok
[INFO] [stdout] test git::tests::test_stage_except_batches_multiple_excluded_files ... ok
[INFO] [stdout] test git::tests::test_stage_except_tolerates_unstaged_file_in_exclude_list ... ok
[INFO] [stdout] test git::tests::test_stage_except_unstages_excluded_files ... ok
[INFO] [stdout] test git::tests::test_rollback_except_cleans_conflicted_stash_apply_keeps_preexisting ... ok
[INFO] [stdout] test git::tests::test_revert_multiple_wip_commits_newest_first ... ok
[INFO] [stdout] test git::tests::test_stash_push_clean_tree_returns_none ... ok
[INFO] [stdout] test git::tests::test_stash_pop_not_found_when_dropped ... ok
[INFO] [stdout] test git::tests::test_validate_refname_core_rules ... ok
[INFO] [stdout] test harness::tests::reviewer_spawn_uses_curated_environment ... ok
[INFO] [stdout] test harness::tests::test_argv_mode_auto_spills_to_tempfile_above_threshold ... ok
[INFO] [stdout] test harness::tests::test_argv_mode_under_threshold_uses_argv ... ok
[INFO] [stdout] test harness::tests::test_argv_overflow_error_aborts_large_prompt ... ok
[INFO] [stdout] test harness::tests::test_argv_overflow_error_allows_small_prompts ... ok
[INFO] [stdout] test harness::tests::test_argv_overflow_spill_to_stdin ... ok
[INFO] [stdout] test harness::tests::test_build_harness_args_agent_file_placeholder_replaced ... ok
[INFO] [stdout] test harness::tests::test_build_harness_args_appends_json_output ... ok
[INFO] [stdout] test harness::tests::test_build_harness_args_appends_prompt_when_no_placeholder ... ok
[INFO] [stdout] test harness::tests::test_build_harness_args_claude_agent_file ... ok
[INFO] [stdout] test harness::tests::test_build_harness_args_no_agent_file_no_flag ... ok
[INFO] [stdout] test harness::tests::test_build_harness_args_no_json_when_unsupported ... ok
[INFO] [stdout] test harness::tests::test_build_harness_args_no_model_args_when_neither_set ... ok
[INFO] [stdout] test harness::tests::test_build_harness_args_opencode_uses_run_subcommand ... ok
[INFO] [stdout] test harness::tests::test_build_harness_args_override_beats_default_model ... ok
[INFO] [stdout] test harness::tests::test_build_harness_args_override_ignored_when_no_model_args ... ok
[INFO] [stdout] test harness::tests::test_build_harness_args_pi_uses_mode_json ... ok
[INFO] [stdout] test harness::tests::test_build_harness_args_prompt_containing_agent_file_token_no_agent ... ok
[INFO] [stdout] test harness::tests::test_build_harness_args_prompt_containing_agent_file_token_with_agent ... ok
[INFO] [stdout] test harness::tests::test_build_harness_args_replaces_prompt_placeholder ... ok
[INFO] [stdout] test harness::tests::test_build_harness_args_replaces_prompt_within_arg ... ok
[INFO] [stdout] test harness::tests::test_build_harness_args_uses_default_model_when_no_override ... ok
[INFO] [stdout] test harness::tests::test_build_harness_env_claude_uses_flag_not_env ... ok
[INFO] [stdout] test harness::tests::test_build_harness_env_goose ... ok
[INFO] [stdout] test harness::tests::test_build_harness_env_includes_configured_auth_vars ... ok
[INFO] [stdout] test harness::tests::test_build_harness_env_no_agent ... ok
[INFO] [stdout] test harness::tests::test_copilot_argv_mode_forwards_model_flag ... ok
[INFO] [stdout] test harness::tests::test_prompt_input_mode_default_is_stdin ... ok
[INFO] [stdout] test harness::tests::test_remove_agent_file_args ... ok
[INFO] [stdout] test harness::tests::test_remove_agent_file_args_no_placeholder ... ok
[INFO] [stdout] test harness::tests::test_resolve_harness_chain_all_levels ... ok
[INFO] [stdout] test harness::tests::test_resolve_harness_falls_back_to_default ... ok
[INFO] [stdout] test harness::tests::test_resolve_harness_plan_overrides_default ... ok
[INFO] [stdout] test harness::tests::test_resolve_harness_returns_config ... ok
[INFO] [stdout] test harness::tests::test_resolve_harness_step_overrides_plan ... ok
[INFO] [stdout] test harness::tests::test_resolve_harness_unknown_errors ... ok
[INFO] [stdout] test harness::tests::test_spawn_harness_interactive_sets_kill_on_drop ... ok
[INFO] [stdout] test harness::tests::test_spawn_harness_sets_kill_on_drop ... ok
[INFO] [stdout] test harness::tests::test_stdin_mode_strips_prompt_placeholder_and_returns_bytes ... ok
[INFO] [stdout] test harness::tests::test_stdin_mode_writes_prompt_to_stdin_and_closes ... ok
[INFO] [stdout] test harness::tests::test_tempfile_mode_writes_and_passes_path ... ok
[INFO] [stdout] test hook_library::tests::test_filter_by_project ... ok
[INFO] [stdout] test hook_library::tests::test_lifecycle_parse ... ok
[INFO] [stdout] test hook_library::tests::test_load_all_returns_empty_when_dir_missing ... ok
[INFO] [stdout] test hook_library::tests::test_load_all_skips_corrupt_files_and_loads_valid ... ok
[INFO] [stdout] test hook_library::tests::test_parse_accepts_closing_delimiter_with_trailing_whitespace ... ok
[INFO] [stdout] test hook_library::tests::test_parse_body_with_diff_markers_does_not_close_frontmatter_early ... ok
[INFO] [stdout] test hook_library::tests::test_parse_description_preserves_hash_in_double_quotes ... ok
[INFO] [stdout] test hook_library::tests::test_parse_description_preserves_hash_in_single_quotes ... ok
[INFO] [stdout] test hook_library::tests::test_parse_global_hook ... ok
[INFO] [stdout] test hook_library::tests::test_parse_path_scoped_hook ... ok
[INFO] [stdout] test hook_library::tests::test_parse_rejects_indented_closing_delimiter ... ok
[INFO] [stdout] test hook_library::tests::test_parse_rejects_missing_frontmatter ... ok
[INFO] [stdout] test hook_library::tests::test_parse_rejects_relative_paths ... ok
[INFO] [stdout] test hook_library::tests::test_parse_rejects_unknown_lifecycle ... ok
[INFO] [stdout] test hook_library::tests::test_parse_strips_unquoted_trailing_comment ... ok
[INFO] [stdout] test hook_library::tests::test_parse_uses_fallback_name ... ok
[INFO] [stdout] test hook_library::tests::test_roundtrip_description_with_embedded_backslash ... ok
[INFO] [stdout] test hook_library::tests::test_roundtrip_description_with_hash ... ok
[INFO] [stdout] test hook_library::tests::test_roundtrip_description_with_newline ... ok
[INFO] [stdout] test hook_library::tests::test_roundtrip_global ... ok
[INFO] [stdout] test hook_library::tests::test_roundtrip_paths ... ok
[INFO] [stdout] test hook_library::tests::test_scope_matches_global ... ok
[INFO] [stdout] test hook_library::tests::test_scope_matches_prefix ... ok
[INFO] [stdout] test hook_library::tests::test_strip_comment_inside_quotes ... ok
[INFO] [stdout] test hook_library::tests::test_strip_comment_outside_quotes ... ok
[INFO] [stdout] test hook_library::tests::test_yaml_escape_newline ... ok
[INFO] [stdout] test hook_library::tests::test_yaml_escape_plain ... ok
[INFO] [stdout] test hook_library::tests::test_yaml_escape_tab_and_backslash ... ok
[INFO] [stdout] test hook_library::tests::test_yaml_escape_with_colon ... ok
[INFO] [stdout] test git::tests::test_stash_push_dirty_tree_returns_sha_and_message ... ok
[INFO] [stdout] test git::tests::test_stash_push_with_untracked_except_drop_does_not_touch_excluded ... ok
[INFO] [stdout] test git::tests::test_stash_pop_clean ... ok
[INFO] [stdout] test git::tests::test_stash_push_with_untracked_except_returns_none_when_only_excluded_dirty ... ok
[INFO] [stdout] test hooks::tests::test_env_var_values_not_reexpanded_by_shell ... ok
[INFO] [stdout] test git::tests::test_stash_push_with_untracked_except_keeps_excluded_files_in_workdir ... ok
[INFO] [stdout] test git::tests::test_stash_pop_conflict_leaves_stash_intact ... ok
[INFO] [stdout] test git::tests::test_iteration_commit_trailers_parsed_by_git_not_subject ... ok
[INFO] [stdout] test hooks::tests::test_hook_commands_do_not_inherit_caller_environment ... ok
[INFO] [stdout] test hooks::tests::test_hook_stderr_is_bounded_in_exit_failure ... ok
[INFO] [stdout] test hooks::tests::test_post_step_hook_failure_is_warning ... ok
[INFO] [stdout] test hooks::tests::test_hook_timeout_zero_disables_timeout ... ok
[INFO] [stdout] test hooks::tests::test_post_step_db_error_escalates_to_hard_failure ... ok
[INFO] [stdout] test hooks::tests::test_post_test_db_error_escalates_to_hard_failure ... ok
[INFO] [stdout] test hooks::tests::test_run_lifecycle_with_no_hooks ... ok
[INFO] [stdout] test hooks::tests::test_warning_message_is_distinct_per_failure_kind ... ok
[INFO] [stdout] test import::tests::test_check_import_version_future_major_errors_when_strict ... ok
[INFO] [stdout] test import::tests::test_check_import_version_future_major_warns_not_strict ... ok
[INFO] [stdout] test import::tests::test_check_import_version_same_major_ok ... ok
[INFO] [stdout] test import::tests::test_classify_bundle_short_id_presence_not_depends_on ... ok
[INFO] [stdout] test hooks::tests::test_pre_step_hook_failure_propagates ... ok
[INFO] [stdout] test hooks::tests::test_run_plan_wide_and_per_step_hooks ... ok
[INFO] [stdout] test hooks::tests::test_status_env_var_passed_to_post_step ... ok
[INFO] [stdout] test hooks::tests::test_test_passed_env_var ... ok
[INFO] [stdout] test hooks::tests::test_warn_and_skip_missing_hook ... ok
[INFO] [stdout] test import::tests::test_dag_aware_bundle_preserves_short_ids_and_edges ... ok
[INFO] [stdout] test import::tests::test_import_binds_to_project_directory ... ok
[INFO] [stdout] test import::tests::test_import_invalid_json ... ok
[INFO] [stdout] test import::tests::test_import_creates_fresh_uuids ... ok
[INFO] [stdout] test import::tests::test_import_defaults_change_policy_to_required_when_missing ... ok
[INFO] [stdout] test hooks::tests::test_hook_timeout_aborts_long_running_hook ... ok
[INFO] [stdout] test import::tests::test_import_file_not_found ... ok
[INFO] [stdout] test import::tests::test_import_from_json_string ... ok
[INFO] [stdout] test import::tests::test_import_missing_tags_defaults_to_empty ... ok
[INFO] [stdout] test import::tests::test_import_from_file ... ok
[INFO] [stdout] test import::tests::test_import_negative_limits_fail_before_writing_plan ... ok
[INFO] [stdout] test import::tests::test_import_negative_step_max_retries_fails_before_writing_plan ... ok
[INFO] [stdout] test import::tests::test_import_normalizes_and_validates_tags ... ok
[INFO] [stdout] test import::tests::test_import_preserves_explicit_tags ... ok
[INFO] [stdout] test import::tests::test_import_rejects_blank_slug_before_write ... ok
[INFO] [stdout] test import::tests::test_import_rejects_cycle ... ok
[INFO] [stdout] test import::tests::test_import_plan_status_ready_steps_pending ... ok
[INFO] [stdout] test import::tests::test_import_rejects_dangling_edge ... ok
[INFO] [stdout] test import::tests::test_import_rejects_duplicate_depends_on_edge ... ok
[INFO] [stdout] test import::tests::test_import_rejects_duplicate_short_id ... ok
[INFO] [stdout] test import::tests::test_import_rejects_invalid_branch_before_write ... ok
[INFO] [stdout] test import::tests::test_import_rejects_missing_short_id_in_dag_bundle ... ok
[INFO] [stdout] test import::tests::test_import_rejects_self_edge ... ok
[INFO] [stdout] test import::tests::test_import_rolls_back_on_failure ... ok
[INFO] [stdout] test import::tests::test_import_tolerates_legacy_questions_enabled_key ... ok
[INFO] [stdout] test import::tests::test_import_with_branch_override ... ok
[INFO] [stdout] test import::tests::test_import_with_future_major_version_errors_strict ... ok
[INFO] [stdout] test import::tests::test_import_with_future_major_version_succeeds_non_strict ... ok
[INFO] [stdout] test import::tests::test_import_with_harness_override ... ok
[INFO] [stdout] test import::tests::test_major_version_helper ... ok
[INFO] [stdout] test import::tests::test_import_with_unparseable_version_proceeds ... ok
[INFO] [stdout] test import::tests::test_import_with_missing_dep_warns_but_succeeds ... ok
[INFO] [stdout] test import::tests::test_import_with_slug_override ... ok
[INFO] [stdout] test import::tests::test_import_with_missing_optional_fields ... ok
[INFO] [stdout] test import::tests::test_legacy_bundle_backfills_linear_chain_like_v25 ... ok
[INFO] [stdout] test import::tests::test_legacy_bundle_without_review_fields_imports_to_defaults ... ok
[INFO] [stdout] test import::tests::test_roundtrip_branched_plan_reproduces_dag ... ok
[INFO] [stdout] test import::tests::test_roundtrip_multi_root_no_edge_plan_stays_no_edge ... ok
[INFO] [stdout] test import::tests::test_roundtrip_export_import ... ok
[INFO] [stdout] test import::tests::test_roundtrip_linear_plan_preserves_short_ids_and_exact_chain ... ok
[INFO] [stdout] test import::tests::test_validate_rejects_rootless_dag ... ok
[INFO] [stdout] test io_util::tests::test_drain_bounded_none_reader ... ok
[INFO] [stdout] test io_util::tests::test_drain_bounded_truncates_to_tail ... ok
[INFO] [stdout] test io_util::tests::test_drain_bounded_under_cap_no_marker ... ok
[INFO] [stdout] test io_util::tests::test_drain_bounded_with_emitter_none_matches_drain_bounded ... ok
[INFO] [stdout] test io_util::tests::test_drain_emitter_bounds_newline_free_line_buffer ... ok
[INFO] [stdout] test io_util::tests::test_drain_emitter_emits_one_event_per_newline_in_order ... ok
[INFO] [stdout] test io_util::tests::test_drain_emitter_flushes_unterminated_tail ... ok
[INFO] [stdout] test io_util::tests::test_drain_emitter_handles_partial_reads ... ok
[INFO] [stdout] test io_util::tests::test_drain_emitter_seq_is_monotonic_across_streams ... ok
[INFO] [stdout] test io_util::tests::test_drain_emitter_truncates_long_lines_at_max_bytes ... ok
[INFO] [stdout] test io_util::tests::test_truncate_to_utf8_boundary_respects_char_boundary ... ok
[INFO] [stdout] test io_util::tests::test_truncation_marker_format ... ok
[INFO] [stdout] test import::tests::test_roundtrip_preserves_mixed_change_policies ... ok
[INFO] [stdout] test io_util::tests::test_wait_capped_future_abort_kills_process_group ... ok
[INFO] [stdout] test io_util::tests::test_wait_capped_normal_exit ... ok
[INFO] [stdout] test io_util::tests::test_wait_capped_rejects_non_process_group_leader - should panic ... ok
[INFO] [stdout] test io_util::tests::test_wait_capped_no_timeout_still_bounds ... ok
[INFO] [stdout] test output::tests::test_attempt_cancelled_event_json_shape ... ok
[INFO] [stdout] test output::tests::test_attempt_cancelled_roundtrips_through_deserialize ... ok
[INFO] [stdout] test output::tests::test_colored_status_with_color ... ok
[INFO] [stdout] test import::tests::test_roundtrip_with_dependencies ... ok
[INFO] [stdout] test import::tests::test_roundtrip_preserves_review_toggles_and_max_corrections ... ok
[INFO] [stdout] test import::tests::test_strict_allows_review_off_bundle_without_review_harness ... ok
[INFO] [stdout] test output::tests::test_colored_status_without_color ... ok
[INFO] [stdout] test output::tests::test_colored_termination_reason_color_off ... ok
[INFO] [stdout] test output::tests::test_colored_test_status_color_on ... ok
[INFO] [stdout] test output::tests::test_confirm_capital_y ... ok
[INFO] [stdout] test output::tests::test_colored_test_status_color_off ... ok
[INFO] [stdout] test output::tests::test_confirm_eof ... ok
[INFO] [stdout] test output::tests::test_confirm_mixed_case_yes ... ok
[INFO] [stdout] test output::tests::test_confirm_no_variants ... ok
[INFO] [stdout] test output::tests::test_confirm_prompt_displayed ... ok
[INFO] [stdout] test output::tests::test_confirm_y ... ok
[INFO] [stdout] test output::tests::test_confirm_yes ... ok
[INFO] [stdout] test output::tests::test_emit_ndjson_ok_writes_newline_terminated_json ... ok
[INFO] [stdout] test import::tests::test_strict_rejects_inheriting_bundle_when_global_review_default_is_on ... ok
[INFO] [stdout] test output::tests::test_confirm_empty ... ok
[INFO] [stdout] test output::tests::test_emit_ndjson_serialization_error_propagates ... ok
[INFO] [stdout] test output::tests::test_confirm_n ... ok
[INFO] [stdout] test output::tests::test_format_duration_secs_boundaries ... ok
[INFO] [stdout] test output::tests::test_format_duration_secs_negative_clamps_to_zero ... ok
[INFO] [stdout] test output::tests::test_format_harness_label_color_on_known ... ok
[INFO] [stdout] test output::tests::test_format_harness_label_color_off ... ok
[INFO] [stdout] test output::tests::test_format_now_in_tz_known_timezone ... ok
[INFO] [stdout] test output::tests::test_format_harness_label_color_on_unknown_is_bold_no_color ... ok
[INFO] [stdout] test output::tests::test_format_harness_label_override_takes_precedence ... ok
[INFO] [stdout] test output::tests::test_format_now_in_tz_smoke_live_call ... ok
[INFO] [stdout] test output::tests::test_harness_chunk_stderr_serializes_snake_case ... ok
[INFO] [stdout] test output::tests::test_harness_chunk_event_json_shape ... ok
[INFO] [stdout] test output::tests::test_harness_color_unknown_returns_none ... ok
[INFO] [stdout] test output::tests::test_harness_color_known ... ok
[INFO] [stdout] test output::tests::test_live_run_display_does_not_mark_childless_tests_stale_as_crashed ... ok
[INFO] [stdout] test output::tests::test_live_run_display_marks_stale_internal_phase_without_child_as_crashed ... ok
[INFO] [stdout] test output::tests::test_live_run_display_malformed_phase_started_at_yields_none ... ok
[INFO] [stdout] test output::tests::test_live_run_display_json_includes_phase_elapsed_secs ... ok
[INFO] [stdout] test output::tests::test_log_entry_summary_json_snake_case ... ok
[INFO] [stdout] test output::tests::test_log_entry_summary_includes_termination_reason_and_test_status ... ok
[INFO] [stdout] test output::tests::test_log_entry_summary_omits_termination_and_test_status_when_none ... ok
[INFO] [stdout] test output::tests::test_parse_hex_color_invalid ... ok
[INFO] [stdout] test output::tests::test_log_entry_summary_truncated_respects_total_budget ... ok
[INFO] [stdout] test output::tests::test_plan_status_icon_all_variants ... ok
[INFO] [stdout] test output::tests::test_plan_summary_json_snake_case ... ok
[INFO] [stdout] test output::tests::test_run_started_event_json_shape ... ok
[INFO] [stdout] test output::tests::test_should_use_color_respects_no_color_env ... ok
[INFO] [stdout] test output::tests::test_skip_request_ignored_event_json_shape ... ok
[INFO] [stdout] test output::tests::test_split_lines_budget_both_fit ... ok
[INFO] [stdout] test output::tests::test_split_lines_budget_both_large_even_split ... ok
[INFO] [stdout] test output::tests::test_split_lines_budget_one_small_one_large ... ok
[INFO] [stdout] test output::tests::test_split_lines_budget_total_never_exceeds_budget ... ok
[INFO] [stdout] test output::tests::test_status_icon_all_variants ... ok
[INFO] [stdout] test output::tests::test_status_icon_with_color ... ok
[INFO] [stdout] test output::tests::test_status_icon_without_color ... ok
[INFO] [stdout] test output::tests::test_status_summary_includes_live_when_populated ... ok
[INFO] [stdout] test output::tests::test_status_summary_omits_live_when_none ... ok
[INFO] [stdout] test output::tests::test_step_summary_json_snake_case ... ok
[INFO] [stdout] test output::tests::test_summary_event_json_shape_with_cost ... ok
[INFO] [stdout] test output::tests::test_summary_event_omits_cost_when_none ... ok
[INFO] [stdout] test output::tests::test_test_chunk_event_json_shape ... ok
[INFO] [stdout] test output::tests::test_parse_hex_color_valid ... ok
[INFO] [stdout] test output::tests::test_phase_changed_event_json_shape ... ok
[INFO] [stdout] test plan::tests::test_change_policy_default_is_required ... ok
[INFO] [stdout] test plan::tests::test_change_policy_display ... ok
[INFO] [stdout] test output::tests::test_phase_changed_serializes_each_phase_snake_case ... ok
[INFO] [stdout] test plan::tests::test_change_policy_serialize_snake_case ... ok
[INFO] [stdout] test plan::tests::test_effective_step_status_blocked_is_derived_and_reversible ... ok
[INFO] [stdout] test import::tests::test_strict_rejects_review_bundle_without_review_harness ... ok
[INFO] [stdout] test plan::tests::test_interruption_blocker_serde_defaults_empty_options ... ok
[INFO] [stdout] test plan::tests::test_interruption_kind_default_is_question ... ok
[INFO] [stdout] test plan::tests::test_interruption_kind_display ... ok
[INFO] [stdout] test plan::tests::test_interruption_kind_roundtrip ... ok
[INFO] [stdout] test plan::tests::test_interruption_kind_serialize_snake_case ... ok
[INFO] [stdout] test plan::tests::test_interruption_serde_round_trip_snake_case ... ok
[INFO] [stdout] test plan::tests::test_interruption_state_default_is_open ... ok
[INFO] [stdout] test plan::tests::test_interruption_state_display ... ok
[INFO] [stdout] test plan::tests::test_interruption_state_roundtrip ... ok
[INFO] [stdout] test plan::tests::test_interruption_state_serialize_snake_case ... ok
[INFO] [stdout] test plan::tests::test_invalid_change_policy ... ok
[INFO] [stdout] test plan::tests::test_invalid_interruption_kind ... ok
[INFO] [stdout] test plan::tests::test_invalid_interruption_state ... ok
[INFO] [stdout] test plan::tests::test_invalid_phase ... ok
[INFO] [stdout] test plan::tests::test_invalid_plan_status ... ok
[INFO] [stdout] test plan::tests::test_invalid_review_status ... ok
[INFO] [stdout] test plan::tests::test_invalid_step_status ... ok
[INFO] [stdout] test plan::tests::test_invalid_termination_reason ... ok
[INFO] [stdout] test plan::tests::test_invalid_test_status ... ok
[INFO] [stdout] test plan::tests::test_phase_display ... ok
[INFO] [stdout] test plan::tests::test_phase_roundtrip ... ok
[INFO] [stdout] test plan::tests::test_phase_serialize_snake_case ... ok
[INFO] [stdout] test output::tests::test_colored_termination_reason_color_on ... ok
[INFO] [stdout] test plan::tests::test_change_policy_roundtrip ... ok
[INFO] [stdout] test plan::tests::test_execution_log_from_row_surfaces_present_cycle_index_type_errors ... ok
[INFO] [stdout] test plan::tests::test_plan_columns_matches_physical_table_order ... ok
[INFO] [stdout] test plan::tests::test_plan_serde_defaults_review_enabled_when_missing ... ok
[INFO] [stdout] test plan::tests::test_plan_status_display ... ok
[INFO] [stdout] test plan::tests::test_plan_status_interrupted_serde_and_display ... ok
[INFO] [stdout] test plan::tests::test_plan_status_roundtrip ... ok
[INFO] [stdout] test plan::tests::test_plan_status_serialize_lowercase ... ok
[INFO] [stdout] test plan::tests::test_review_status_default_is_pending ... ok
[INFO] [stdout] test plan::tests::test_review_status_display ... ok
[INFO] [stdout] test plan::tests::test_review_status_roundtrip ... ok
[INFO] [stdout] test plan::tests::test_execution_log_from_row ... ok
[INFO] [stdout] test plan::tests::test_review_status_serialize_snake_case ... ok
[INFO] [stdout] test plan::tests::test_blocked_overlay_is_never_persisted_by_storage ... ok
[INFO] [stdout] test plan::tests::test_step_serde_defaults_change_policy_when_missing ... ok
[INFO] [stdout] test plan::tests::test_step_serde_defaults_review_fields_when_missing ... ok
[INFO] [stdout] test plan::tests::test_step_serde_preserves_optional_change_policy ... ok
[INFO] [stdout] test plan::tests::test_step_status_display ... ok
[INFO] [stdout] test plan::tests::test_step_status_roundtrip ... ok
[INFO] [stdout] test plan::tests::test_step_status_serialize_lowercase ... ok
[INFO] [stdout] test plan::tests::test_termination_reason_display ... ok
[INFO] [stdout] test plan::tests::test_termination_reason_paused_for_question_serde_and_display ... ok
[INFO] [stdout] test plan::tests::test_termination_reason_roundtrip ... ok
[INFO] [stdout] test plan::tests::test_termination_reason_serialize_snake_case ... ok
[INFO] [stdout] test plan::tests::test_test_status_display ... ok
[INFO] [stdout] test plan::tests::test_test_status_roundtrip ... ok
[INFO] [stdout] test plan::tests::test_test_status_serialize_snake_case ... ok
[INFO] [stdout] test plan_harness::tests::test_build_initial_prompt_with_description ... ok
[INFO] [stdout] test plan_harness::tests::test_build_initial_prompt_with_plan_slug_and_description ... ok
[INFO] [stdout] test plan_harness::tests::test_build_initial_prompt_with_plan_slug_only ... ok
[INFO] [stdout] test plan_harness::tests::test_build_initial_prompt_without_description ... ok
[INFO] [stdout] test plan_harness::tests::test_build_plan_harness_args_claude ... ok
[INFO] [stdout] test plan_harness::tests::test_build_plan_harness_args_codex_prepends_agent ... ok
[INFO] [stdout] test plan_harness::tests::test_build_plan_harness_args_copilot_uses_interactive_flag ... ok
[INFO] [stdout] test plan_harness::tests::test_build_plan_harness_args_goose_does_not_inline_agent ... ok
[INFO] [stdout] test plan_harness::tests::test_build_plan_harness_args_legacy_empty_template ... ok
[INFO] [stdout] test plan_harness::tests::test_build_plan_harness_args_pi_prepends_agent ... ok
[INFO] [stdout] test plan_harness::tests::test_build_plan_harness_args_prompt_containing_agent_file_token ... ok
[INFO] [stdout] test plan_harness::tests::test_build_plan_harness_args_unknown_harness_returns_err ... ok
[INFO] [stdout] test plan_harness::tests::test_build_plan_harness_env_claude_no_env ... ok
[INFO] [stdout] test plan_harness::tests::test_build_plan_harness_env_goose ... ok
[INFO] [stdout] test plan_harness::tests::test_build_plan_harness_env_goose_no_agent_file ... ok
[INFO] [stdout] test plan_harness::tests::test_build_plan_harness_env_unknown_harness_returns_err ... ok
[INFO] [stdout] test plan_harness::tests::test_harness_plan_agent_content ... ok
[INFO] [stdout] test plan_harness::tests::test_plan_harness_args_agent_file_substring ... ok
[INFO] [stdout] test plan_harness::tests::test_plan_harness_args_substring_replacement ... ok
[INFO] [stdout] test plan_harness::tests::test_plan_harness_exit_code_preserves_signal_death ... ok
[INFO] [stdout] test plan_harness::tests::test_plan_harness_large_prompt_errors_without_tempfile_delivery ... ok
[INFO] [stdout] test plan_harness::tests::test_plan_harness_large_prompt_spills_to_tempfile_when_configured ... ok
[INFO] [stdout] test plan::tests::test_plan_from_row ... ok
[INFO] [stdout] test plan::tests::test_plan_from_row_roundtrip_via_plan_columns ... ok
[INFO] [stdout] test plan::tests::test_plan_from_row_surfaces_present_max_review_corrections_type_errors ... ok
[INFO] [stdout] test plan_harness::tests::test_render_plan_agent_lists_hooks ... ok
[INFO] [stdout] test plan_harness::tests::test_render_plan_agent_no_hooks_message ... ok
[INFO] [stdout] test plan_harness::tests::test_write_agent_temp_file ... ok
[INFO] [stdout] test preflight::tests::check_steps_passes_when_no_commit_phrases ... ok
[INFO] [stdout] test preflight::tests::check_steps_warns_for_commit_instruction_in_acceptance_criteria ... ok
[INFO] [stdout] test preflight::tests::check_steps_warns_for_commit_instruction_in_description ... ok
[INFO] [stdout] test preflight::tests::step_text_contains_commit_instruction_matches_phrases ... ok
[INFO] [stdout] test plan::tests::test_step_from_row_surfaces_present_column_type_errors ... ok
[INFO] [stdout] test preflight::tests::test_check_global_prompt_pass_when_hints_present ... ok
[INFO] [stdout] test plan::tests::test_step_from_row ... ok
[INFO] [stdout] test preflight::tests::test_check_harness_auth_copilot_no_token ... ok
[INFO] [stdout] test preflight::tests::test_check_global_prompt_warns_when_none_empty_or_garbage ... ok
[INFO] [stdout] test preflight::tests::test_check_harness_auth_custom_probe_fails ... ok
[INFO] [stdout] test preflight::tests::test_check_harness_auth_env_var_present_skips_probe ... ok
[INFO] [stdout] test preflight::tests::test_check_harness_auth_non_copilot ... ok
[INFO] [stdout] test preflight::tests::test_check_package_manager_missing_node_modules ... ok
[INFO] [stdout] test preflight::tests::test_check_harness_auth_custom_probe_succeeds ... ok
[INFO] [stdout] test preflight::tests::test_check_package_manager_with_node_modules ... ok
[INFO] [stdout] test preflight::tests::test_check_package_manager_no_pkg_json ... ok
[INFO] [stdout] test preflight::tests::test_check_review_harness_pass_when_defined_and_on_path ... ok
[INFO] [stdout] test preflight::tests::test_check_review_harness_warns_when_named_but_undefined ... ok
[INFO] [stdout] test preflight::tests::test_check_review_harness_warns_when_unconfigured ... ok
[INFO] [stdout] test preflight::tests::test_check_test_binaries_empty ... ok
[INFO] [stdout] test preflight::tests::test_check_review_harness_warns_when_command_off_path ... ok
[INFO] [stdout] test preflight::tests::test_check_git_state_not_git_repo ... ok
[INFO] [stdout] test preflight::tests::test_classify_disk_space_boundaries ... ok
[INFO] [stdout] test preflight::tests::test_classify_disk_space_error ... ok
[INFO] [stdout] test preflight::tests::test_classify_disk_space_pass ... ok
[INFO] [stdout] test preflight::tests::test_check_test_binaries_found ... ok
[INFO] [stdout] test preflight::tests::test_disk_space_available_gb ... ok
[INFO] [stdout] test preflight::tests::test_disk_space_root_returns_plausible_values ... ok
[INFO] [stdout] test preflight::tests::test_check_test_binaries_not_found ... ok
[INFO] [stdout] test plan_harness::tests::test_planner_proceeds_when_no_run_lock ... ok
[INFO] [stdout] test preflight::tests::test_classify_disk_space_warning ... ok
[INFO] [stdout] test plan_harness::tests::test_planner_refuses_even_when_plan_slug_is_null ... ok
[INFO] [stdout] test plan_harness::tests::test_planner_refuses_when_run_lock_present ... ok
[INFO] [stdout] test io_util::tests::test_wait_capped_timeout_kills_and_reaps ... ok
[INFO] [stdout] test preflight::tests::test_extract_binary_simple ... ok
[INFO] [stdout] test preflight::tests::test_extract_binary_with_path ... ok
[INFO] [stdout] test preflight::tests::test_is_binary_available_sh ... ok
[INFO] [stdout] test preflight::tests::test_is_binary_not_available ... ok
[INFO] [stdout] test preflight::tests::test_preflight_results_all_passed ... ok
[INFO] [stdout] test preflight::tests::test_preflight_results_has_error ... ok
[INFO] [stdout] test preflight::tests::test_preflight_results_is_ok ... ok
[INFO] [stdout] test preflight::tests::test_doctor_omits_review_harness_check_when_no_review_enabled ... ok
[INFO] [stdout] test preflight::tests::test_preflight_unknown_harness_fails_strict ... ok
[INFO] [stdout] test preflight::tests::test_print_report_with_color_emits_ansi ... ok
[INFO] [stdout] test preflight::tests::test_review_harness_warning_is_non_fatal ... ok
[INFO] [stdout] test prompt::tests::test_build_review_prompt_basic_structure ... ok
[INFO] [stdout] test prompt::tests::test_build_step_prompt_all_sections ... ok
[INFO] [stdout] test prompt::tests::test_build_step_prompt_emits_pointer_for_non_native_harness ... ok
[INFO] [stdout] test prompt::tests::test_build_step_prompt_no_acceptance_criteria ... ok
[INFO] [stdout] test prompt::tests::test_build_step_prompt_no_agent_pointer_when_native ... ok
[INFO] [stdout] test prompt::tests::test_build_step_prompt_no_agent_pointer_when_no_agent ... ok
[INFO] [stdout] test prompt::tests::test_build_step_prompt_no_tests ... ok
[INFO] [stdout] test prompt::tests::test_build_step_prompt_with_retry_context ... ok
[INFO] [stdout] test prompt::tests::test_current_step_marked_with_arrow ... ok
[INFO] [stdout] test preflight::tests::test_print_report_no_color_omits_ansi ... ok
[INFO] [stdout] test prompt::tests::test_default_prepend_flows_through_global_layer ... ok
[INFO] [stdout] test prompt::tests::test_default_prepend_not_auto_injected ... ok
[INFO] [stdout] test preflight::tests::test_doctor_checks_returns_results ... ok
[INFO] [stdout] test prompt::tests::test_deterministic_tests_framing_no_imperative ... ok
[INFO] [stdout] test prompt::tests::test_format_retry_context_full ... ok
[INFO] [stdout] test prompt::tests::test_format_retry_context_minimal ... ok
[INFO] [stdout] test prompt::tests::test_format_retry_context_no_diff_but_reason_and_output ... ok
[INFO] [stdout] test prompt::tests::test_layers_skip_empty_and_none ... ok
[INFO] [stdout] test prompt::tests::test_plan_description_emitted_exactly_once_executor_realistic ... ok
[INFO] [stdout] test prompt::tests::test_layers_stack_global_project_plan_at_top ... ok
[INFO] [stdout] test prompt::tests::test_question_ask_instruction_always_appended ... ok
[INFO] [stdout] test prompt::tests::test_resolved_interruptions_absent_when_empty ... ok
[INFO] [stdout] test prompt::tests::test_resolved_interruptions_gated_only_on_the_slice ... ok
[INFO] [stdout] test prompt::tests::test_prompt_includes_step_titles_list_not_descriptions ... ok
[INFO] [stdout] test prompt::tests::test_prompt_section_order ... ok
[INFO] [stdout] test prompt::tests::test_resolved_interruptions_section_renders_kind_body_resolution_comment ... ok
[INFO] [stdout] test prompt::tests::test_review_prompt_is_o1_single_commit_diff_only ... ok
[INFO] [stdout] test prompt::tests::test_truncate_text_both_bounds_tripped ... ok
[INFO] [stdout] test prompt::tests::test_truncate_text_short ... ok
[INFO] [stdout] test prompt::tests::test_truncate_text_long_keeps_head ... ok
[INFO] [stdout] test prompt::tests::test_truncate_text_single_huge_line_byte_capped ... ok
[INFO] [stdout] test prompt::tests::test_truncate_text_utf8_safe ... ok
[INFO] [stdout] test review::tests::test_effective_max_review_corrections ... ok
[INFO] [stdout] test preflight::tests::test_doctor_surfaces_missing_model_args_warning ... ok
[INFO] [stdout] test preflight::tests::test_doctor_global_prompt_warning_is_non_fatal ... ok
[INFO] [stdout] test preflight::tests::test_doctor_surfaces_copilot_incompat_warnings ... ok
[INFO] [stdout] test review::tests::test_parse_review_verdict_fail_with_count ... ok
[INFO] [stdout] test review::tests::test_parse_review_verdict_last_line_wins ... ok
[INFO] [stdout] test review::tests::test_parse_review_verdict_missing_is_fail_safe ... ok
[INFO] [stdout] test review::tests::test_parse_review_verdict_pass ... ok
[INFO] [stdout] test review::tests::test_parse_review_verdict_pass_with_trailing_punctuation ... ok
[INFO] [stdout] test review::tests::test_parse_review_verdict_pass_word_continuation_is_fail_safe ... ok
[INFO] [stdout] test prompt::tests::test_resolved_interruptions_section_is_bounded_in_count_and_per_field ... ok
[INFO] [stdout] test review::tests::test_last_nonempty_line ... ok
[INFO] [stdout] test preflight::tests::test_doctor_global_prompt_pass_when_seeded ... ok
[INFO] [stdout] test review::tests::test_consume_corrective_request_inserts_and_reparents ... ok
[INFO] [stdout] test review::tests::test_human_approved_request_bypasses_recursion_cap ... ok
[INFO] [stdout] {"event":"interruption_raised","interruption_id":"f7f82475-abcb-4515-8821-5f01263efecf","step_id":"b5e9bcb4-0e95-49aa-803f-0109786deb63","plan_slug":"cap-json","kind":"blocker","auto_raised":false,"attempt":1,"raised_at":"2026-06-12T16:43:20.143653530Z"}
[INFO] [stdout] {"event":"review_loop_escalated","step_id":"b5e9bcb4-0e95-49aa-803f-0109786deb63","step_num":1,"chain_len":0,"cap":0}
[INFO] [stdout] test review::tests::test_recursion_cap_escalates_to_single_blocker ... ok
[INFO] [stdout] test review::tests::test_recursion_cap_escalation_json_mode_still_commits_blocker ... ok
[INFO] [stdout] test review::tests::test_review_is_read_only_wrt_reviewed_commit ... ok
[INFO] [stdout] test review::tests::test_failed_review_only_requests_never_mutates_dag ... ok
[INFO] [stdout] test run_lock::tests::acquire_release_connection_sets_busy_timeout ... ok
[INFO] [stdout] test review::tests::test_review_pass_transitions_status_and_annotates_trailer ... ok
[INFO] [stdout] test run_lock::tests::acquire_records_parent_tui_pid_on_unix ... ok
[INFO] [stdout] test run_lock::tests::concurrent_acquirers_leave_exactly_one_lock_row ... ok
[INFO] [stdout] test run_lock::tests::double_signal_cleanup_clears_run_lock_row ... ok
[INFO] [stdout] test run_lock::tests::drop_calls_release_closure ... ok
[INFO] [stdout] test review::tests::test_review_worktree_only_tamper_cannot_touch_live_workdir ... ok
[INFO] [stdout] test run_lock::tests::is_same_live_process_missing_stored_token_falls_back_to_liveness ... ok
[INFO] [stdout] test run_lock::tests::force_reclaims_live_lock ... ok
[INFO] [stdout] test run_lock::tests::error_message_escapes_apostrophe_in_project_path ... ok
[INFO] [stdout] test run_lock::tests::pid_is_alive_self ... ok
[INFO] [stdout] test run_lock::tests::pid_is_alive_treats_permission_denied_as_alive ... ok
[INFO] [stdout] test run_lock::tests::pid_is_alive_zero_or_negative ... ok
[INFO] [stdout] test run_lock::tests::fresh_acquire_succeeds ... ok
[INFO] [stdout] test run_lock::tests::process_start_token_self_is_stable_and_nonempty ... ok
[INFO] [stdout] test run_lock::tests::live_run_from_row_rejects_malformed_phase ... ok
[INFO] [stdout] test run_lock::tests::live_run_from_row_hydrates_every_column ... ok
[INFO] [stdout] test run_lock::tests::release_closure_reuses_shared_connection ... ok
[INFO] [stdout] test run_lock::tests::pid_reuse_with_mismatched_start_token_reclaims_lock ... ok
[INFO] [stdout] test run_lock::tests::record_source_branch_and_stash_errors_when_no_row ... ok
[INFO] [stdout] test run_lock::tests::record_source_branch_and_stash_writes_both_columns ... ok
[INFO] [stdout] test run_lock::tests::sql_escape_single_quotes_doubles_apostrophes ... ok
[INFO] [stdout] test run_lock::tests::run_blocks_concurrent_skip_on_same_project ... ok
[INFO] [stdout] test runner::tests::crash_reconcile_prompt_is_offloaded_from_async_path ... ok
[INFO] [stdout] test runner::tests::test_abort_branch_drains_reviews_before_returning ... ok
[INFO] [stdout] test runner::tests::test_blocked_branch_does_not_starve_an_independent_branch ... ok
[INFO] [stdout] test run_lock::tests::release_row_with_conn_is_pid_scoped ... ok
[INFO] [stdout] test runner::tests::test_compute_branch_plan_current_branch_skips_parent ... ok
[INFO] [stdout] test runner::tests::test_compute_branch_plan_ignores_out_of_scope_deps ... ok
[INFO] [stdout] test runner::tests::test_compute_branch_plan_multiple_deps_picks_most_recent ... ok
[INFO] [stdout] test runner::tests::test_compute_branch_plan_no_deps_uses_run_start_sha ... ok
[INFO] [stdout] test run_lock::tests::second_acquire_with_live_pid_fails ... ok
[INFO] [stdout] test runner::tests::test_compute_branch_plan_single_dep_uses_dep_tip ... ok
[INFO] [stdout] test run_lock::tests::stale_lock_is_reclaimed ... ok
[INFO] [stdout] test runner::tests::test_dependents_of_failed_step_starve ... ok
[INFO] [stdout] test runner::tests::test_deps_satisfied_only_complete_unblocks ... ok
[INFO] [stdout] test runner::tests::test_diamond_dag_short_id_is_stable_final_discriminator ... ok
[INFO] [stdout] test runner::tests::test_direct_dependents_gated_until_reviewed_step_complete ... ok
[INFO] [stdout] test runner::tests::test_crash_leaves_stash_on_stack ... ok
[INFO] [stdout] test runner::tests::test_clean_tree_no_stash_needed ... ok
[INFO] [stdout] test runner::tests::test_drain_finished_reviews_blocking_wait_is_abort_cancellable ... ok
[INFO] [stdout] test review::tests::test_review_timeout_guard_failure_does_not_mask_timeout ... ok
[INFO] [stdout] test review::tests::test_review_subprocess_times_out_and_errors ... ok
[INFO] [stdout] test runner::tests::test_drain_reviews_on_abort_uses_joinset_shutdown ... ok
[INFO] [stdout] test runner::tests::test_dry_run_report ... ok
[INFO] [stdout] test review::tests::test_review_worktree_cleaned_up_on_pass_and_failure ... ok
[INFO] [stdout] test runner::tests::test_find_current_step ... ok
[INFO] [stdout] test runner::tests::test_find_current_step_all_done ... ok
[INFO] [stdout] test runner::tests::test_find_resume_point_all_complete ... ok
[INFO] [stdout] test runner::tests::test_find_resume_point_all_failed_errors ... ok
[INFO] [stdout] test runner::tests::test_find_resume_point_in_progress ... ok
[INFO] [stdout] test runner::tests::test_find_resume_point_pending ... ok
[INFO] [stdout] test runner::tests::test_find_resume_point_in_progress_over_failed ... ok
[INFO] [stdout] test runner::tests::test_find_resume_point_skips_failed ... ok
[INFO] [stdout] test runner::tests::test_is_actionable_statuses ... ok
[INFO] [stdout] test runner::tests::test_linear_plan_serializes_exactly_as_today_under_review_code ... ok
[INFO] [stdout] test runner::tests::test_linear_plan_with_one_blocked_step_pauses_like_before ... ok
[INFO] [stdout] test runner::tests::test_linear_chain_is_byte_identical_to_sort_key_order ... ok
[INFO] [stdout] test runner::tests::test_multi_root_dag_order_is_oracle_stable ... ok
[INFO] [stdout] test runner::tests::test_orchestrator_clears_live_run_step_between_iterations ... ok
[INFO] [stdout] test runner::tests::test_parked_restore_conflict_body_honest_on_cleanup_outcome ... ok
[INFO] [stdout] test runner::tests::test_dirty_tree_no_auto_stash_bails_cleanly ... ok
[INFO] [stdout] test runner::tests::test_paused_step_requeues_within_same_run_after_resolution ... ok
[INFO] [stdout] test runner::tests::test_pick_next_step_skips_failed_step ... ok
[INFO] [stdout] test hooks::tests::test_hook_timeout_kills_whole_process_group ... ok
[INFO] [stdout] test runner::tests::test_dirty_tree_default_auto_stash_push_pop_round_trip ... ok
[INFO] [stdout] test runner::tests::test_progress_header_uses_plan_relative_numbers ... ok
[INFO] [stdout] test runner::tests::test_explicit_step_reset_still_works_on_failed ... ok
[INFO] [stdout] test runner::tests::test_remove_stash_residue_files_error_handling ... ok
[INFO] [stdout] test runner::tests::test_drain_reviews_on_abort_applies_finished_verdict_and_aborts_inflight ... ok
[INFO] [stdout] test runner::tests::test_mid_run_step_insertion_picked_up ... ok
[INFO] [stdout] test runner::tests::test_plan_status_transitions_in_storage ... ok
[INFO] [stdout] test runner::tests::test_resolve_window_from_greater_than_to_errors ... ok
[INFO] [stdout] test runner::tests::test_resolve_window_from_to_bounds ... ok
[INFO] [stdout] test runner::tests::test_resolve_window_no_bounds_covers_all ... ok
[INFO] [stdout] test runner::tests::test_resolve_window_out_of_range_errors ... ok
[INFO] [stdout] test runner::tests::test_resolve_window_tolerates_midrun_insert ... ok
[INFO] [stdout] test runner::tests::test_resolved_interruption_requeues_step_at_next_tick ... ok
[INFO] [stdout] test runner::tests::test_plan_status_failed_transition ... ok
[INFO] [stdout] test runner::tests::test_current_branch_with_dirty_tree_stashes_and_restores ... ok
[INFO] [stdout] test runner::tests::test_pause_requested_stops_between_steps_and_clears_flag ... ok
[INFO] [stdout] test runner::tests::test_raise_parked_restore_blocker_inserts_marker_and_options ... ok
[INFO] [stdout] test runner::tests::test_reset_clears_skipped_reason ... ok
[INFO] [stdout] test runner::tests::test_restore_parked_step_worktree_notfound_raises_blocker_no_bail ... ok
[INFO] [stdout] test runner::tests::test_resume_resets_aborted_step_to_pending ... ok
[INFO] [stdout] test runner::tests::test_resume_skips_failed_steps ... ok
[INFO] [stdout] test runner::tests::test_resolve_conflicted_parked_restore_mark_pending_clears_row_and_stash ... ok
[INFO] [stdout] test runner::tests::test_resolve_conflicted_parked_restore_mark_failed_clears_row_and_stash ... ok
[INFO] [stdout] test runner::tests::test_run_options_default ... ok
[INFO] [stdout] test runner::tests::test_resume_with_only_failed_steps_does_nothing ... ok
[INFO] [stdout] test runner::tests::test_restore_parked_step_worktree_conflict_raises_blocker_keeps_bridge ... ok
[INFO] [stdout] test runner::tests::test_run_all_plans_cycle_detection ... ok
[INFO] [stdout] test runner::tests::test_run_all_plans_no_runnable_plans ... ok
[INFO] [stderr]   Prompt (512 of 1395 chars):
[INFO] [stderr]     # Plan: p
[INFO] [stderr]     
[INFO] [stderr]     d
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `feat/p`
[INFO] [stderr]     **Project:** `/tmp/.tmpoJMjMm`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#2 of 2): second
[INFO] [stderr]     
[INFO] [stderr]     d
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     #1. [COMPLETE] first
[INFO] [stderr]     → #2. [PENDING] second
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: second
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]       - The plan des
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test runner::tests::test_resume_after_pause_does_not_re_pause ... ok
[INFO] [stdout] test runner::tests::test_scheduler_diamond ... ok
[INFO] [stdout] test runner::tests::test_scheduler_linear_chain ... ok
[INFO] [stdout] test runner::tests::test_scheduler_multi_root_dag ... ok
[INFO] [stdout] test runner::tests::test_scheduler_no_edges_is_authored_sort_key_order ... ok
[INFO] [stdout] test runner::tests::test_scheduler_short_id_breaks_sort_key_ties ... ok
[INFO] [stdout] test runner::tests::test_scheduler_skips_executed_and_is_deterministic ... ok
[INFO] [stdout] test runner::tests::test_scheduler_walks_around_failed_step ... ok
[INFO] [stdout] test runner::tests::test_scheduler_window_excludes_out_of_window_dep ... ok
[INFO] [stdout] test runner::tests::test_select_steps_default_returns_all_even_completed ... ok
[INFO] [stdout] test runner::tests::test_select_steps_default_returns_all_remaining ... ok
[INFO] [stdout] test runner::tests::test_select_steps_from_only ... ok
[INFO] [stdout] test runner::tests::test_select_steps_from_to ... ok
[INFO] [stdout] test runner::tests::test_select_steps_out_of_range ... ok
[INFO] [stdout] test runner::tests::test_select_steps_step_flag_none_pending ... ok
[INFO] [stdout] test runner::tests::test_select_steps_step_flag_returns_only_next ... ok
[INFO] [stdout] test runner::tests::test_select_steps_step_flag_skips_completed ... ok
[INFO] [stdout] test runner::tests::test_select_steps_step_picks_failed_as_next ... ok
[INFO] [stdout] test runner::tests::test_select_steps_to_only ... ok
[INFO] [stdout] test runner::tests::test_setup_branch_does_not_block_runtime ... ok
[INFO] [stdout] test runner::tests::test_restore_parked_step_worktree_reapplies_stash_and_clears_row ... ok
[INFO] [stdout] test runner::tests::test_run_plan_does_not_count_preexisting_complete_as_succeeded ... ok
[INFO] [stderr]   Prompt (512 of 1408 chars):
[INFO] [stderr]     # Plan: concurrent
[INFO] [stderr]     
[INFO] [stderr]     d
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `feat/concurrent`
[INFO] [stderr]     **Project:** `/tmp/.tmpOTwrCZ`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 2): Alpha
[INFO] [stderr]     
[INFO] [stderr]     d
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Alpha
[INFO] [stderr]     #2. [PENDING] Beta
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Alpha
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]       -
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stderr]   Prompt (512 of 1399 chars):
[INFO] [stderr]     # Plan: parent
[INFO] [stderr]     
[INFO] [stderr]     d
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `feat/parent`
[INFO] [stderr]     **Project:** `/tmp/.tmpXnnH6I`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Parent step
[INFO] [stderr]     
[INFO] [stderr]     d
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Parent step
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Parent step
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]       - The plan
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test runner::tests::test_setup_branch_reports_create_and_fallback_checkout_errors ... ok
[INFO] [stderr]   Prompt (512 of 1913 chars):
[INFO] [stdout] test runner::tests::test_run_plan_records_last_run_branch_in_current_branch_mode ... ok
[INFO] [stderr]     # Plan: resume-corrective
[INFO] [stderr]     
[INFO] [stderr]     d
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `feat/resume-corrective`
[INFO] [stderr]     **Project:** `/tmp/.tmpqXqslR`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#2 of 2): Fix review defects in: Original
[INFO] [stderr]     
[INFO] [stderr]     A read-only review of `Original` rejected the implementation. Correct the defect(s) so this step's acceptance criteria are genuinely met. This is a corrective step inserted by ralph's review pipeline; everything that depended on the original step now depends on THIS step.
[INFO] [stderr]     
[INFO] [stderr]     ### Acceptance criteria
[INFO] [stderr]     - The defects flagged by the prior review are fixed and th
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test runner::tests::test_run_plan_records_plan_branch_when_not_current_branch_mode ... ok
[INFO] [stdout] test runner::tests::test_setup_branch_with_parent_sha ... ok
[INFO] [stdout] test runner::tests::test_skip_step_allows_failed ... ok
[INFO] [stdout] test runner::tests::test_skip_step_by_number ... ok
[INFO] [stdout] test runner::tests::test_run_plan_consumes_stranded_corrective_request_before_rerun ... ok
[INFO] [stdout] test runner::tests::test_setup_branch_failure_still_restores_stash ... ok
[INFO] [stderr]   Prompt (512 of 1394 chars):
[INFO] [stderr]     # Plan: child
[INFO] [stderr]     
[INFO] [stderr]     d
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `feat/child`
[INFO] [stderr]     **Project:** `/tmp/.tmpXnnH6I`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#1 of 1): Child step
[INFO] [stderr]     
[INFO] [stderr]     d
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     → #1. [PENDING] Child step
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Child step
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]       - The plan desc
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test runner::tests::test_skip_step_current ... ok
[INFO] [stderr]   Prompt (512 of 1410 chars):
[INFO] [stderr]     # Plan: concurrent
[INFO] [stderr]     
[INFO] [stderr]     d
[INFO] [stderr]     
[INFO] [stderr]     **Branch:** `feat/concurrent`
[INFO] [stderr]     **Project:** `/tmp/.tmpOTwrCZ`
[INFO] [stderr]     
[INFO] [stderr]     ## Your step (#2 of 2): Beta
[INFO] [stderr]     
[INFO] [stderr]     d
[INFO] [stderr]     
[INFO] [stderr]     ## Plan step map
[INFO] [stderr]     
[INFO] [stderr]     #1. [IN_PROGRESS] Alpha
[INFO] [stderr]     → #2. [PENDING] Beta
[INFO] [stderr]     
[INFO] [stderr]     **Important:** Only modify files relevant to this step. Do not make unrelated changes.
[INFO] [stderr]     Focus on: Beta
[INFO] [stderr]     
[INFO] [stderr]     ## Asking the user a question
[INFO] [stderr]     
[INFO] [stderr]     You may pause and ask the user for clarification when you're genuinely
[INFO] [stderr]     blocked on a decision they need to make.
[INFO] [stderr]     
[INFO] [stderr]     Before asking, seriously consider whether the answer is already
[INFO] [stderr]     recoverable from:
[INFO] [stderr]     
[INFO] [stderr]     [truncated — re-run with --verbose to see the full prompt]
[INFO] [stdout] test runner::tests::test_skip_non_running_step_ignores_changes_and_leaves_tree ... ok
[INFO] [stdout] test runner::tests::test_skip_step_no_reason_stores_null ... ok
[INFO] [stdout] test runner::tests::test_skip_step_in_flight_routes_through_cancel_channel ... ok
[INFO] [stdout] test runner::tests::test_skip_step_out_of_range ... ok
[INFO] [stdout] test runner::tests::test_skipped_dep_makes_dependent_runnable ... ok
[INFO] [stdout] test runner::tests::test_skip_step_persists_reason ... ok
[INFO] [stdout] test runner::tests::test_run_all_plans_keeps_aborted_upstream_in_scope ... ok
[INFO] [stdout] test runner::tests::test_skip_step_rejects_complete ... ok
[INFO] [stdout] test runner::tests::test_skip_step_stale_in_progress_ignores_other_plan_live_run ... ok
[INFO] [stdout] test runner::tests::test_stale_in_progress_swept_on_run_start ... ok
[INFO] [stdout] test runner::tests::test_step_number_in_plan ... ok
[INFO] [stdout] test runner::tests::test_stale_sweep_noop_without_in_progress ... ok
[INFO] [stdout] test runner::tests::test_skip_step_same_process_in_flight_requires_matching_step ... ok
[INFO] [stdout] test runner::tests::test_step_status_transitions ... ok
[INFO] [stdout] test runner::tests::test_transitive_dependents_diamond_no_duplicates ... ok
[INFO] [stdout] test runner::tests::test_transitive_dependents_direct_dependent ... ok
[INFO] [stdout] test runner::tests::test_transitive_dependents_independent_plans_not_blocked ... ok
[INFO] [stdout] test runner::tests::test_transitive_dependents_no_edges ... ok
[INFO] [stdout] test runner::tests::test_transitive_dependents_transitive_chain ... ok
[INFO] [stdout] test runner::tests::test_validate_plan_status_aborted_allows_resume ... ok
[INFO] [stdout] test runner::tests::test_validate_plan_status_complete_rejected ... ok
[INFO] [stdout] test runner::tests::test_validate_plan_status_failed_allows_retry ... ok
[INFO] [stdout] test runner::tests::test_validate_plan_status_in_progress ... ok
[INFO] [stdout] test runner::tests::test_validate_plan_status_planning_rejected ... ok
[INFO] [stdout] test runner::tests::test_validate_plan_status_ready ... ok
[INFO] [stdout] test signal::tests::test_abort_tx_propagates ... ok
[INFO] [stdout] test signal::tests::test_cancel_reasons_are_distinct ... ok
[INFO] [stdout] test runner::tests::test_step_status_failed_and_skipped ... ok
[INFO] [stdout] test runner::tests::test_stash_pop_conflict_during_teardown_preserves_stash ... ok
[INFO] [stdout] test signal::tests::test_first_signal_flag ... ok
[INFO] [stdout] test signal::tests::test_install_and_spawn ... ok
[INFO] [stdout] test signal::tests::test_install_and_spawn_with_handle ... ok
[INFO] [stdout] test signal::tests::test_install_returns_controller_and_rx ... ok
[INFO] [stdout] test signal::tests::test_multiple_receivers ... ok
[INFO] [stdout] test runner::tests::test_skip_step_not_in_flight_flips_db ... ok
[INFO] [stdout] test signal::tests::test_exit_cleanup_runs_once_and_is_cleared ... ok
[INFO] [stdout] test signal::tests::test_request_skip_in_flight_signals_skipped ... ok
[INFO] [stdout] test signal::tests::test_clear_exit_cleanup_prevents_run ... ok
[INFO] [stdout] test signal::tests::test_request_skip_no_step_in_flight_is_noop ... ok
[INFO] [stdout] test signal::tests::test_shutdown_controller_initial_state ... ok
[INFO] [stdout] test signal::tests::test_shutdown_controller_instances_are_independent ... ok
[INFO] [stdout] test signal::tests::test_shutdown_handle_triggers_abort ... ok
[INFO] [stdout] test signal::tests::test_spawn_signal_listener_returns_handle_and_rx ... ok
[INFO] [stdout] test signal::tests::test_sigterm_stream_is_registered_before_listener_spawn ... ok
[INFO] [stdout] test signal::tests::test_skip_injectors_decline_when_abort_latched ... ok
[INFO] [stdout] test runner::tests::test_sweep_and_log_wrapper_flips_and_returns_rows ... ok
[INFO] [stdout] test signal::tests::test_sigterm_uses_graceful_shutdown_path ... ok
[INFO] [stdout] test runner::tests::test_stash_round_trip_preserves_staged_status ... ok
[INFO] [stdout] test runner::tests::test_stash_pop_on_failure_still_fires ... ok
[INFO] [stdout] test storage::tests::test_add_plan_dependency_happy_path ... ok
[INFO] [stdout] test storage::tests::test_add_step_dependency_rejects_cross_plan_edge ... ok
[INFO] [stdout] test storage::tests::test_add_plan_dependency_rejects_self_reference ... ok
[INFO] [stdout] test storage::tests::test_add_step_dependency_happy_path ... ok
[INFO] [stdout] test storage::tests::test_add_plan_dependency_rejects_cycle ... ok
[INFO] [stdout] test storage::tests::test_add_step_dependency_rejects_cycle ... ok
[INFO] [stdout] test storage::tests::test_add_step_dependency_rejects_self_reference ... ok
[INFO] [stdout] test storage::tests::test_any_review_enabled_detects_plan_or_step_truthy_only ... ok
[INFO] [stdout] test runner::tests::test_run_plan_overlaps_unrelated_impl_with_in_flight_review ... ok
[INFO] [stdout] test storage::tests::test_bind_live_run_to_plan_sets_plan_and_clears_stale_step_state ... ok
[INFO] [stdout] test storage::tests::test_attach_hook_allows_distinct_combinations ... ok
[INFO] [stdout] test storage::tests::test_attach_hook_to_step_rejects_duplicate ... ok
[INFO] [stdout] test storage::tests::test_clear_live_run_step_missing_row_errors ... ok
[INFO] [stdout] test storage::tests::test_attach_hook_to_plan_rejects_duplicate ... ok
[INFO] [stdout] test storage::tests::test_clear_live_run_step_models_orchestrator_a_to_b_transition ... ok
[INFO] [stdout] test storage::tests::test_clear_live_run_step_nulls_step_fields_keeps_plan ... ok
[INFO] [stdout] test storage::tests::test_clear_skip_request_is_idempotent_noop_when_empty ... ok
[INFO] [stdout] test storage::tests::test_count_archived_plans ... ok
[INFO] [stdout] test storage::tests::test_create_and_get_execution_log ... ok
[INFO] [stdout] test storage::tests::test_count_unanswered_questions_for_attempt_scopes_by_step_and_attempt ... ok
[INFO] [stdout] test storage::tests::test_corrective_chain_len_recursive_cte_handles_long_chains ... ok
[INFO] [stdout] test storage::tests::test_create_step_propagates_last_sort_key_query_error ... ok
[INFO] [stdout] test storage::tests::test_create_execution_log_copies_current_cycle_index ... ok
[INFO] [stdout] test storage::tests::test_create_plan_and_get_by_slug ... ok
[INFO] [stdout] test storage::tests::test_create_step_assigns_unique_short_id ... ok
[INFO] [stdout] test storage::tests::test_create_step_at_persists_change_policy ... ok
[INFO] [stdout] test storage::tests::test_create_step_generates_sort_keys ... ok
[INFO] [stdout] test storage::tests::test_create_step_persists_change_policy_required_by_default ... ok
[INFO] [stdout] test storage::tests::test_create_step_persists_change_policy_optional ... ok
[INFO] [stdout] test storage::tests::test_create_step_retries_concurrent_sort_key_collision ... ok
[INFO] [stdout] test storage::tests::test_create_step_stores_tags ... ok
[INFO] [stdout] test storage::tests::test_delete_mid_dag_step_reparents_dependents ... ok
[INFO] [stdout] test storage::tests::test_delete_plan_cascades ... ok
[INFO] [stdout] test storage::tests::test_delete_step_uses_batch_cycle_guard ... ok
[INFO] [stdout] test storage::tests::test_delete_mid_dag_step_reparents_without_duplicate_when_diamond ... ok
[INFO] [stdout] test storage::tests::test_delete_plan_not_found ... ok
[INFO] [stdout] test storage::tests::test_delete_run_lock_row_unscoped_null_token_both_sides ... ok
[INFO] [stdout] test storage::tests::test_delete_run_lock_row_unscoped_mismatched_token_leaves_row ... ok
[INFO] [stdout] test storage::tests::test_delete_run_lock_row_unscoped_matches_pid_and_token ... ok
[INFO] [stdout] test storage::tests::test_delete_step_clears_corrective_links_to_deleted_step ... ok
[INFO] [stdout] test storage::tests::test_delete_step ... ok
[INFO] [stdout] test storage::tests::test_finalize_execution_log_as_interrupted_missing_row_is_benign ... ok
[INFO] [stdout] test storage::tests::test_finalize_execution_log_as_interrupted_preserves_existing_terminal ... ok
[INFO] [stdout] test storage::tests::test_finalize_execution_log_as_interrupted_sets_fields ... ok
[INFO] [stdout] test storage::tests::test_find_active_plan_filters_by_status ... ok
[INFO] [stdout] test storage::tests::test_find_resumable_plan_returns_aborted_in_any_branch_context ... ok
[INFO] [stdout] test storage::tests::test_find_resumable_plan_orders_by_run_time_not_updated_at ... ok
[INFO] [stdout] test storage::tests::test_find_resumable_plan_excludes_complete_and_planning ... ok
[INFO] [stdout] test storage::tests::test_find_resumable_plans_for_branch_excludes_completed_and_planning ... ok
[INFO] [stdout] test storage::tests::test_find_resumable_plans_for_branch_scopes_to_project ... ok
[INFO] [stdout] test storage::tests::test_find_resumable_plans_for_branch_orders_by_last_run_started_at_desc ... ok
[INFO] [stdout] test storage::tests::test_find_resumable_plans_never_run_uses_branch_name_fallback ... ok
[INFO] [stdout] test storage::tests::test_find_resumable_plans_no_false_match_when_last_run_branch_set ... ok
[INFO] [stdout] test storage::tests::test_find_resumable_plans_orders_by_run_time_not_updated_at ... ok
[INFO] [stdout] test storage::tests::test_get_interruption_round_trips ... ok
[INFO] [stdout] test storage::tests::test_get_latest_log_for_step ... ok
[INFO] [stdout] test storage::tests::test_get_live_run_missing_returns_none ... ok
[INFO] [stdout] test storage::tests::test_get_next_pending_step ... ok
[INFO] [stdout] test storage::tests::test_get_project_settings_db_ignores_file ... ok
[INFO] [stdout] test storage::tests::test_insert_interruption_round_trips_options_state ... ok
[INFO] [stdout] test storage::tests::test_get_plan_by_slug_not_found ... ok
[INFO] [stdout] test storage::tests::test_insert_step_minting_short_id_does_not_reroll_other_unique_violation ... ok
[INFO] [stdout] test storage::tests::test_insert_interruption_blocker_with_options_round_trips ... ok
[INFO] [stdout] test storage::tests::test_insert_step_minting_short_id_rerolls_observed_short_id_collision ... ok
[INFO] [stdout] test storage::tests::test_json_roundtrip_deterministic_tests ... ok
[INFO] [stdout] test storage::tests::test_json_roundtrip_acceptance_criteria ... ok
[INFO] [stdout] test storage::tests::test_json_roundtrip_empty_arrays ... ok
[INFO] [stdout] test storage::tests::test_list_archived_plans_sorted_by_recency_only_returns_archived ... ok
[INFO] [stdout] test storage::tests::test_list_interruptions_for_step_scopes_to_step ... ok
[INFO] [stdout] test storage::tests::test_list_plan_dependencies_and_dependents ... ok
[INFO] [stdout] test storage::tests::test_list_inbox_rows_enforces_sql_side_resolved_limit ... ok
[INFO] [stdout] test storage::tests::test_list_plans_filters_by_project ... ok
[INFO] [stdout] test storage::tests::test_list_plans_sorted_by_recency_excludes_archived_and_other_projects ... ok
[INFO] [stdout] test storage::tests::test_list_plans_sorted_by_recency_logs_win_over_created_at ... ok
[INFO] [stdout] test storage::tests::test_list_plans_sorted_by_recency_no_logs_uses_created_at ... ok
[INFO] [stdout] test storage::tests::test_list_plans_sorted_by_recency_uses_max_log ... ok
[INFO] [stdout] test storage::tests::test_list_resolved_interruptions_for_step_is_bounded_and_newest_first ... ok
[INFO] [stdout] test storage::tests::test_list_step_dependency_edges ... ok
[INFO] [stdout] test storage::tests::test_list_steps_ordered_by_sort_key ... ok
[INFO] [stdout] test storage::tests::test_list_step_dependencies_and_dependents ... ok
[INFO] [stdout] test storage::tests::test_live_run_writes_do_not_mutate_foreign_pid_row ... ok
[INFO] [stdout] test storage::tests::test_mark_step_skipped_clears_parked_worktree ... ok
[INFO] [stdout] test storage::tests::test_mark_step_skipped_closes_open_corrective_request ... ok
[INFO] [stdout] test storage::tests::test_project_prompt_file_write_and_delete ... ok
[INFO] [stdout] test storage::tests::test_plan_effective_status_returns_interrupted_when_open_interruption_exists ... ok
[INFO] [stdout] test storage::tests::test_project_prompt_db_used_when_file_absent ... ok
[INFO] [stdout] test storage::tests::test_plan_effective_status_returns_underlying_when_no_open_questions ... ok
[INFO] [stdout] test storage::tests::test_project_prompt_blank_file_does_not_shadow_db ... ok
[INFO] [stdout] test storage::tests::test_project_prompt_dir_at_path_falls_back_to_db ... ok
[INFO] [stdout] test storage::tests::test_project_prompt_none_when_unconfigured ... ok
[INFO] [stdout] test storage::tests::test_project_prompt_file_wins_over_db ... ok
[INFO] [stdout] test storage::tests::test_request_skip_missing_plan_errs ... ok
[INFO] [stdout] test storage::tests::test_remove_plan_dependency ... ok
[INFO] [stdout] test storage::tests::test_request_skip_round_trips_and_take_clears_atomically ... ok
[INFO] [stdout] test storage::tests::test_resolve_interruption_uses_shared_immediate_tx_wrapper ... ok
[INFO] [stdout] test storage::tests::test_remove_step_dependency ... ok
[INFO] [stdout] test storage::tests::test_request_skip_overwrites_prior_and_unknown_token_defaults_stash ... ok
[INFO] [stdout] test storage::tests::test_mint_short_id_unique_length_charset ... ok
[INFO] [stdout] test storage::tests::test_reset_step_clears_execution_logs ... ok
[INFO] [stdout] test storage::tests::test_reset_step_clears_parked_worktree ... ok
[INFO] [stdout] test storage::tests::test_resolve_interruption_reuses_existing_transaction ... ok
[INFO] [stdout] test storage::tests::test_resolve_interruption_round_trips_resolution_comment_state ... ok
[INFO] [stdout] test storage::tests::test_set_plan_deterministic_tests_round_trip ... ok
[INFO] [stdout] test storage::tests::test_set_plan_deterministic_tests_unknown_plan_errors ... ok
[INFO] [stdout] test storage::tests::test_set_plan_last_run_branch_missing_plan_errs ... ok
[INFO] [stdout] test storage::tests::test_set_plan_last_run_branch_round_trips ... ok
[INFO] [stdout] test storage::tests::test_set_plan_last_run_branch_stamps_last_run_started_at ... ok
[INFO] [stdout] test storage::tests::test_set_plan_pause_requested_missing_plan_errs ... ok
[INFO] [stdout] test storage::tests::test_set_plan_pause_requested_round_trips ... ok
[INFO] [stdout] test storage::tests::test_set_step_attempts_persists_value_and_errors_on_missing ... ok
[INFO] [stdout] test storage::tests::test_set_step_attempts_zero_after_nonzero_bumps_cycle_index ... ok
[INFO] [stdout] test storage::tests::test_step_acceptance_criteria_roundtrip ... ok
[INFO] [stdout] test storage::tests::test_step_columns_matches_physical_table_order ... ok
[INFO] [stdout] test storage::tests::test_step_parked_worktree_round_trips_and_clears ... ok
[INFO] [stdout] test storage::tests::test_step_dependency_cascades_on_step_delete ... ok
[INFO] [stdout] test storage::tests::test_sweep_keeps_committed_null_review_status_step_explicitly ... ok
[INFO] [stdout] test storage::tests::test_sweep_keeps_committed_review_pending_step ... ok
[INFO] [stdout] test storage::tests::test_sweep_skips_step_with_open_corrective_request ... ok
[INFO] [stdout] test storage::tests::test_sweep_stale_in_progress_resets_in_flight_review_status ... ok
[INFO] [stdout] test storage::tests::test_take_skip_request_for_step_is_targeted_and_atomic ... ok
[INFO] [stdout] test storage::tests::test_topo_sort_uses_batch_dependency_query ... ok
[INFO] [stdout] test storage::tests::test_tags_default_to_empty_for_legacy_rows ... ok
[INFO] [stdout] test storage::tests::test_take_plan_pause_requested_clears_flag_atomically ... ok
[INFO] [stdout] test storage::tests::test_topo_sort_diamond ... ok
[INFO] [stdout] test storage::tests::test_topo_sort_cycle_detection_error ... ok
[INFO] [stdout] test storage::tests::test_topo_sort_ignores_edges_outside_input ... ok
[INFO] [stdout] test storage::tests::test_topo_sort_independent_plans ... ok
[INFO] [stdout] test storage::tests::test_update_execution_log_persists_termination_and_test_status ... ok
[INFO] [stdout] test storage::tests::test_topo_sort_linear_chain ... ok
[INFO] [stdout] test storage::tests::test_update_execution_log ... ok
[INFO] [stdout] test storage::tests::test_update_execution_log_coalesces_termination_and_test_status ... ok
[INFO] [stdout] test storage::tests::test_update_execution_log_rolled_back_and_committed_panics - should panic ... ok
[INFO] [stdout] test storage::tests::test_update_execution_log_preserves_session_id_when_none ... ok
[INFO] [stdout] test storage::tests::test_update_live_phase_coalesces_optional_fields ... ok
[INFO] [stdout] test storage::tests::test_update_live_phase_clear_child_sets_columns_null ... ok
[INFO] [stdout] test storage::tests::test_update_live_phase_errors_when_no_row ... ok
[INFO] [stdout] test storage::tests::test_update_live_phase_overwrites_current_command ... ok
[INFO] [stdout] test storage::tests::test_update_live_phase_sets_row ... ok
[INFO] [stdout] test storage::tests::test_update_live_phase_keep_preserves_child ... ok
[INFO] [stdout] test storage::tests::test_update_step_fields_ext_clears_nullable_fields ... ok
[INFO] [stdout] test storage::tests::test_update_plan_status ... ok
[INFO] [stdout] test storage::tests::test_update_step_fields_ext_missing_step_rolls_back ... ok
[INFO] [stdout] test storage::tests::test_update_step_fields_ext_atomic_single_update ... ok
[INFO] [stdout] test storage::tests::test_update_step_fields_ext_noop_when_all_none ... ok
[INFO] [stdout] test storage::tests::test_would_create_cycle_direct ... ok
[INFO] [stdout] test test_runner::tests::test_abort_before_start ... ok
[INFO] [stdout] test storage::tests::test_update_step_fields_ext_replaces_tags ... ok
[INFO] [stdout] test storage::tests::test_update_step_status ... ok
[INFO] [stdout] test test_runner::tests::test_captures_output ... ok
[INFO] [stdout] test test_runner::tests::test_captures_stderr ... ok
[INFO] [stdout] test test_runner::tests::test_chunk_events_tagged_with_correct_test_index ... ok
[INFO] [stdout] test test_runner::tests::test_chunk_no_emission_when_cfg_is_none ... ok
[INFO] [stdout] test test_runner::tests::test_empty_tests ... ok
[INFO] [stdout] test test_runner::tests::test_abort_signal_interrupts_running_test ... ok
[INFO] [stdout] test test_runner::tests::test_exit_code_nonzero ... ok
[INFO] [stdout] test test_runner::tests::test_first_failure_short_circuits ... ok
[INFO] [stdout] test storage::tests::test_would_create_step_cycle_direct ... ok
[INFO] [stdout] test test_runner::tests::test_run_single_test_sets_kill_on_drop ... ok
[INFO] [stdout] test test_runner::tests::test_tail_lines_preserves_trailing_newline ... ok
[INFO] [stdout] test test_runner::tests::test_tail_lines_truncation ... ok
[INFO] [stdout] test test_runner::tests::test_respects_cwd ... ok
[INFO] [stdout] test test_runner::tests::test_test_commands_do_not_inherit_caller_environment ... ok
[INFO] [stdout] test storage::tests::test_would_create_cycle_transitive ... ok
[INFO] [stdout] test tui::choice::tests::ctrl_c_returns_cancelled ... ok
[INFO] [stdout] test tui::choice::tests::empty_choices_focus_is_zero_and_enter_is_pending ... ok
[INFO] [stdout] test test_runner::tests::test_all_pass ... ok
[INFO] [stdout] test tui::choice::tests::esc_returns_cancelled ... ok
[INFO] [stdout] test tui::choice::tests::horizontal_and_unrecognized_keys_do_not_move_or_terminate ... ok
[INFO] [stdout] test tui::choice::tests::j_and_down_move_focus_down_and_clamp_at_bottom ... ok
[INFO] [stdout] test tui::choice::tests::k_and_up_move_focus_up_and_clamp_at_top ... ok
[INFO] [stdout] test tui::choice::tests::new_clamps_default_index_into_range ... ok
[INFO] [stdout] test tui::choice::tests::new_honors_in_range_default_index ... ok
[INFO] [stdout] test tui::choice::tests::enter_returns_the_focused_variant ... ok
[INFO] [stdout] test tui::choice::tests::render_windows_long_lists_to_keep_focus_visible ... ok
[INFO] [stdout] test tui::choice::tests::render_writes_all_labels_and_title ... ok
[INFO] [stdout] test tui::chrome::tests::left_truncate_fits_unchanged ... ok
[INFO] [stdout] test tui::chrome::tests::left_truncate_replaces_left_with_ellipsis ... ok
[INFO] [stdout] test tui::chrome::tests::left_truncate_respects_wide_glyph_columns ... ok
[INFO] [stdout] test tui::chrome::tests::left_truncate_zero_and_one_max ... ok
[INFO] [stdout] test tui::chrome::tests::format_cwd_version_includes_version_and_path ... ok
[INFO] [stdout] test tui::chrome::tests::render_banner_replaces_hint_on_bottom_row ... ok
[INFO] [stdout] test tui::chrome::tests::render_draws_breadcrumb_and_version ... ok
[INFO] [stdout] test tui::chrome::tests::render_left_truncates_cwd_in_narrow_terminal ... ok
[INFO] [stdout] test tui::chrome::tests::render_does_not_panic_on_tiny_terminal ... ok
[INFO] [stdout] test tui::chrome::tests::right_truncate_fits_unchanged ... ok
[INFO] [stdout] test tui::chrome::tests::right_truncate_replaces_right_with_ellipsis ... ok
[INFO] [stdout] test tui::chrome::tests::right_truncate_respects_wide_glyph_columns ... ok
[INFO] [stdout] test tui::chrome::tests::right_truncate_zero_and_one_max ... ok
[INFO] [stdout] test tui::chrome::tests::shorten_with_home_does_not_match_partial_segment ... ok
[INFO] [stdout] test tui::chrome::tests::shorten_with_home_exact_home ... ok
[INFO] [stdout] test tui::chrome::tests::shorten_with_home_no_home_known ... ok
[INFO] [stdout] test tui::chrome::tests::shorten_with_home_substitutes_prefix ... ok
[INFO] [stdout] test tui::chrome::tests::shorten_with_home_unrelated_path ... ok
[INFO] [stdout] test tui::dialog::tests::centered_rect_fits_inside_area ... ok
[INFO] [stdout] test tui::dialog::tests::ctrl_c_is_no ... ok
[INFO] [stdout] test tui::chrome::tests::render_returns_inner_body_rect ... ok
[INFO] [stdout] test tui::dialog::tests::enter_uses_default_no ... ok
[INFO] [stdout] test tui::dialog::tests::enter_uses_default_yes ... ok
[INFO] [stdout] test tui::dialog::tests::esc_is_no ... ok
[INFO] [stdout] test tui::dialog::tests::lowercase_n_is_no ... ok
[INFO] [stdout] test tui::dialog::tests::lowercase_y_is_yes ... ok
[INFO] [stdout] test tui::dialog::tests::modified_y_n_are_pending ... ok
[INFO] [stdout] test tui::dialog::tests::render_does_not_panic_on_tiny_terminal ... ok
[INFO] [stdout] test tui::dialog::tests::render_shows_title_and_body ... ok
[INFO] [stdout] test tui::dialog::tests::unrecognized_key_is_pending ... ok
[INFO] [stdout] test tui::dialog::tests::uppercase_n_is_no ... ok
[INFO] [stdout] test tui::dialog::tests::uppercase_y_is_yes ... ok
[INFO] [stdout] test tui::dialog::tests::render_uses_default_yes_hint ... ok
[INFO] [stdout] test tui::editor::tests::edit_at_returns_modified_contents ... ok
[INFO] [stdout] test tui::editor::tests::edit_at_returns_none_on_nonzero_exit ... ok
[INFO] [stdout] test tui::editor::tests::edit_at_returns_none_when_editor_does_not_modify ... ok
[INFO] [stdout] test tui::editor::tests::edit_at_supports_editor_with_flags ... ok
[INFO] [stdout] test tui::editor::tests::resolve_editor_falls_back_to_visual ... ok
[INFO] [stdout] test tui::editor::tests::resolve_editor_prefers_editor_over_visual ... ok
[INFO] [stdout] test tui::editor::tests::resolve_editor_preserves_args ... ok
[INFO] [stdout] test tui::editor::tests::resolve_editor_returns_none_when_unset ... ok
[INFO] [stdout] test tui::editor::tests::resolve_editor_treats_empty_as_unset ... ok
[INFO] [stdout] test tui::editor::tests::sweep_editor_tempfiles_deletes_only_expired_editor_files ... ok
[INFO] [stdout] test tui::editor::tests::sweep_editor_tempfiles_preserves_recent_editor_files ... ok
[INFO] [stdout] test tui::editor::tests::temp_path_is_under_dir_with_scope_and_md_extension ... ok
[INFO] [stdout] test tui::editor::tests::temp_path_is_unique_per_call ... ok
[INFO] [stdout] test tui::events::tests::test_build_streaming_run_command_args_layout ... ok
[INFO] [stdout] test tui::events::tests::test_build_streaming_run_command_omits_current_branch ... ok
[INFO] [stdout] test tui::events::tests::test_build_streaming_run_command_resume_subcommand ... ok
[INFO] [stdout] test tui::events::tests::test_build_streaming_run_command_with_both_flags ... ok
[INFO] [stdout] test tui::events::tests::test_build_streaming_run_command_with_no_auto_stash ... ok
[INFO] [stdout] test tui::events::tests::test_consume_lines_drops_when_event_buffer_is_full ... ok
[INFO] [stdout] test tui::events::tests::test_consume_lines_invalid_utf8_does_not_stop_stream ... ok
[INFO] [stdout] test tui::events::tests::test_consume_lines_skips_malformed_lines ... ok
[INFO] [stdout] test tui::events::tests::test_dispatch_corrective_step_requested_no_panic ... ok
[INFO] [stdout] test tui::events::tests::test_dispatch_dag_redesign_events_push_toasts ... ok
[INFO] [stdout] test tui::events::tests::test_dispatch_event_has_no_wildcard_arm ... ok
[INFO] [stdout] test tui::events::tests::test_dispatch_harness_chunk_appends_to_tail ... ok
[INFO] [stdout] test tui::events::tests::test_dispatch_no_op_events_no_panic ... ok
[INFO] [stdout] test tui::events::tests::test_dispatch_phase_changed_overrides_run_started_for_timer ... ok
[INFO] [stdout] test tui::events::tests::test_dispatch_phase_changed_updates_phase ... ok
[INFO] [stdout] test tui::events::tests::test_dispatch_plan_complete_clears_subscription_state ... ok
[INFO] [stdout] test tui::events::tests::test_dispatch_run_started_anchors_elapsed_timer ... ok
[INFO] [stdout] test tui::events::tests::test_dispatch_step_started_marks_run_live ... ok
[INFO] [stdout] test tui::events::tests::test_dispatch_test_chunk_appends_to_test_tail ... ok
[INFO] [stdout] test tui::events::tests::test_fake_runner_streams_into_app_via_dispatch ... ok
[INFO] [stdout] test storage::tests::test_would_create_step_cycle_no_cycle ... ok
[INFO] [stdout] test test_runner::tests::test_timeout_interrupts_running_test ... ok
[INFO] [stdout] test tui::events::tests::test_poll_failure_status_clean_run ... ok
[INFO] [stdout] test tui::events::tests::test_poll_failure_status_pending ... ok
[INFO] [stdout] test tui::events::tests::test_poll_failure_status_message_then_clean ... ok
[INFO] [stdout] test tui::events::tests::test_streaming_runner_detaches_on_subscription_drop ... ok
[INFO] [stdout] test tui::help::tests::archived_list_documents_destructive_d ... ok
[INFO] [stdout] test tui::help::tests::ctrl_c_closes_when_visible ... ok
[INFO] [stdout] test tui::help::tests::esc_closes_when_visible ... ok
[INFO] [stdout] test tui::help::tests::esc_does_not_open_help ... ok
[INFO] [stdout] test tui::help::tests::every_view_help_documents_question_mark_toggle ... ok
[INFO] [stdout] test tui::help::tests::inbox_help_documents_run_through_and_back ... ok
[INFO] [stdout] test tui::help::tests::line_count_includes_separators_and_footer ... ok
[INFO] [stdout] test tui::help::tests::max_line_width_counts_terminal_columns ... ok
[INFO] [stdout] test tui::events::tests::test_run_subscription_disconnect_after_drain ... ok
[INFO] [stdout] test tui::help::tests::non_inbox_views_document_global_inbox_binding ... ok
[INFO] [stdout] test tui::help::tests::other_keys_consumed_when_visible ... ok
[INFO] [stdout] test tui::help::tests::other_keys_passthrough_when_hidden ... ok
[INFO] [stdout] test tui::help::tests::plan_dependencies_documents_picker ... ok
[INFO] [stdout] test tui::help::tests::plan_detail_documents_focus_and_inbox_bindings ... ok
[INFO] [stdout] test tui::help::tests::plan_detail_has_run_group ... ok
[INFO] [stdout] test tui::help::tests::plan_list_has_navigation_and_other ... ok
[INFO] [stdout] test tui::help::tests::q_closes_when_visible ... ok
[INFO] [stdout] test tui::help::tests::question_mark_closes_when_visible ... ok
[INFO] [stdout] test tui::help::tests::question_mark_opens_when_hidden ... ok
[INFO] [stdout] test storage::tests::test_would_create_step_cycle_transitive ... ok
[INFO] [stdout] test tui::help::tests::max_line_width_pads_to_key_col ... ok
[INFO] [stdout] test tui::help::tests::render_does_not_panic_on_tiny_terminal ... ok
[INFO] [stdout] test storage::tests::test_would_create_cycle_no_cycle ... ok
[INFO] [stdout] test tui::events::tests::test_is_disconnected_does_not_consume_buffered_event ... ok
[INFO] [stdout] test tui::help::tests::render_skips_when_area_is_zero ... ok
[INFO] [stdout] test tui::help::tests::step_detail_documents_editor_handoff ... ok
[INFO] [stdout] test tui::editor::tests::edit_at_seeds_initial_text_for_editor ... ok
[INFO] [stdout] test tui::outline::tests::corrective_step_carries_corrects_marker_by_short_id ... ok
[INFO] [stdout] test tui::outline::tests::diamond_join_lists_every_dependency_by_short_id ... ok
[INFO] [stdout] test tui::outline::tests::linear_chain_projects_in_authored_order_with_increasing_depth ... ok
[INFO] [stdout] test tui::outline::tests::multi_root_orders_roots_by_sort_key_then_interleaves_by_depth ... ok
[INFO] [stdout] test tui::outline::tests::outline_order_equals_scheduler_pick_order ... ok
[INFO] [stdout] test tui::palette::tests::completion_after_plan_archive_lists_plan_slugs ... ok
[INFO] [stdout] test tui::palette::tests::completion_after_plan_harness_lists_harnesses ... ok
[INFO] [stdout] test tui::palette::tests::completion_after_run_lists_branches ... ok
[INFO] [stdout] test tui::palette::tests::completion_filters_argument_by_partial_prefix ... ok
[INFO] [stdout] test tui::help::tests::render_shows_title_and_groups ... ok
[INFO] [stdout] test tui::palette::tests::completion_filters_by_prefix ... ok
[INFO] [stdout] test tui::palette::tests::completion_keeps_user_slash_in_stem ... ok
[INFO] [stdout] test tui::palette::tests::completion_omits_slash_when_user_didnt_type_it ... ok
[INFO] [stdout] test tui::palette::tests::completion_prefers_longer_verb_match ... ok
[INFO] [stdout] test tui::palette::tests::completion_returns_none_when_arg_pool_empty ... ok
[INFO] [stdout] test tui::palette::tests::completion_returns_none_when_nothing_matches ... ok
[INFO] [stdout] test tui::palette::tests::completion_empty_buffer_lists_all_verbs ... ok
[INFO] [stdout] test test_runner::tests::test_large_output_does_not_deadlock ... ok
[INFO] [stdout] test tui::palette::tests::every_command_has_a_distinct_label ... ok
[INFO] [stdout] test tui::palette::tests::completion_returns_none_when_argsource_is_none ... ok
[INFO] [stdout] test tui::palette::tests::parser_returns_unknown_for_unrecognized_verb ... ok
[INFO] [stdout] test tui::palette::tests::parser_collapses_extra_whitespace ... ok
[INFO] [stdout] test tui::palette::tests::parser_returns_empty_for_blank_input ... ok
[INFO] [stdout] test tui::palette::tests::parser_treats_leading_slash_as_optional ... ok
[INFO] [stdout] test tui::palette::tests::parses_cancel_quit_help ... ok
[INFO] [stdout] test tui::palette::tests::parses_export_import ... ok
[INFO] [stdout] test tui::palette::tests::parses_inbox_and_focus ... ok
[INFO] [stdout] test tui::palette::tests::parses_plan_archive ... ok
[INFO] [stdout] test tui::palette::tests::parses_plan_delete_requires_slug ... ok
[INFO] [stdout] test tui::palette::tests::parses_plan_dependency_subcommands ... ok
[INFO] [stdout] test tui::palette::tests::parses_plan_harness_optional ... ok
[INFO] [stdout] test tui::palette::tests::parses_plan_hook_subcommands ... ok
[INFO] [stdout] test tui::palette::tests::parses_plan_show ... ok
[INFO] [stdout] test tui::palette::tests::parses_plan_unarchive_requires_slug ... ok
[INFO] [stdout] test tui::palette::tests::parses_run_no_branch ... ok
[INFO] [stdout] test tui::palette::tests::parses_run_with_branch ... ok
[INFO] [stdout] test tui::palette::tests::parses_step_add_requires_title ... ok
[INFO] [stdout] test tui::palette::tests::parses_step_add_with_multi_word_title ... ok
[INFO] [stdout] test tui::palette::tests::parses_step_edit_tags ... ok
[INFO] [stdout] test tui::palette::tests::parses_step_hook_subcommands ... ok
[INFO] [stdout] test tui::palette::tests::parses_step_move ... ok
[INFO] [stdout] test tui::palette::tests::parses_step_move_rejects_malformed ... ok
[INFO] [stdout] test tui::palette::tests::parses_step_skip ... ok
[INFO] [stdout] test tui::palette::tests::list_git_branches_in_non_repo_returns_empty ... ok
[INFO] [stdout] test tui::palette::tests::parses_step_skip_rejects_non_integer ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::cancel_emits_cancelrun_unconditionally ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::export_named_active_plan_emits_export ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::export_resolves_archived_plan ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::export_unknown_slug_toasts_error ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::export_with_explicit_output_path ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::focus_dispatches_with_optional_short_id ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::help_routes_to_step_43 ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::import_emits_import_action_with_path ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::inbox_dispatches_to_open_inbox ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::parse_error_empty_maps_to_none ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::parse_error_missing_arg_maps_to_error_toast ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::parse_error_unknown_maps_to_error_toast ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::plan_approve_non_planning_toasts_info ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::plan_approve_omitted_uses_focus ... ok
[INFO] [stdout] test tui::palette::tests::parses_plan_approve ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::plan_approve_planning_flips_to_ready ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::plan_approve_unknown_toasts_error ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::plan_archive_already_archived_toasts ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::plan_archive_named_opens_confirm ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::plan_archive_omitted_uses_focus ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::plan_archive_unknown_toasts_error ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::plan_delete_archived_also_opens_confirm ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::parse_error_invalid_arg_maps_to_error_toast ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::plan_delete_active_opens_confirm ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::plan_delete_unknown_toasts_error ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::plan_dependency_subcommands_open_sub_view_with_focused_plan ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::plan_dependency_subcommands_toast_when_no_focused_plan ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::plan_harness_inherits_focused_slug ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::plan_harness_named_overrides_default ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::plan_harness_no_name_uses_default ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::plan_hook_subcommands_route_to_open_plan_hooks ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::plan_hook_subcommands_toast_when_no_focused_plan ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::plan_show_named_pushes_detail ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::plan_show_omitted_uses_focused_slug ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::plan_show_omitted_with_no_focus_toasts_info ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::plan_show_resolves_archived_slug ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::plan_show_unknown_slug_toasts ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::plan_unarchive_active_plan_toasts_info ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::plan_unarchive_named_unarchives ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::plan_unarchive_unknown_toasts_error ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::quit_emits_quit_action ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::run_branch_multi_plan_forces_current_branch ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::run_branch_single_plan_does_not_force_current_branch ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::run_branch_with_no_targets_toasts ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::run_with_multi_target_uses_first_branch_as_default ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::run_with_no_targets_toasts ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::run_with_single_target_opens_dialog_with_plan_branch ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::step_add_with_focus_returns_addstep ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::step_add_with_whitespace_title_toasts_error ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::step_add_without_focus_toasts_info ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::step_edit_tags_routes_to_open_step_tags ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::step_edit_tags_toasts_when_no_focused_plan ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::step_hook_subcommands_route_to_open_step_hooks ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::step_move_returns_movestep ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::step_move_same_position_toasts_info ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::step_move_without_focus_toasts_info ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::step_edit_tags_toasts_when_no_focused_step ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::step_move_zero_indexed_args_rejected ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::step_hook_subcommands_toast_when_no_focused_step ... ok
[INFO] [stdout] test tests::resolve_plan_rejects_empty_slug ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::step_hook_subcommands_toast_when_no_focused_plan ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::step_skip_with_explicit_num ... ok
[INFO] [stdout] test tui::read_only::tests::default_is_editable ... ok
[INFO] [stdout] test tui::read_only::tests::banner_includes_pid_and_keybinding_hints ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::step_skip_with_focus_no_num_returns_skipstep_none ... ok
[INFO] [stdout] test tui::palette_dispatch::tests::step_skip_without_focus_toasts_info ... ok
[INFO] [stdout] test tui::read_only::tests::banner_none_when_editable ... ok
[INFO] [stdout] test tui::read_only::tests::detect_returns_editable_when_parent_tui_pid_matches_us ... ok
[INFO] [stdout] test tui::read_only::tests::detect_returns_locked_for_external_pid ... ok
[INFO] [stdout] test tui::read_only::tests::editable_reports_not_locked_and_no_pid ... ok
[INFO] [stdout] test tui::read_only::tests::engage_then_release_drives_full_cycle ... ok
[INFO] [stdout] test tui::read_only::tests::locked_reports_locked_and_pid ... ok
[INFO] [stdout] test tui::read_only::tests::new_tracker_should_poll_immediately ... ok
[INFO] [stdout] test tui::read_only::tests::observe_engaged_when_editable_to_locked ... ok
[INFO] [stdout] test tui::read_only::tests::detect_returns_editable_when_lock_belongs_to_us ... ok
[INFO] [stdout] test tui::read_only::tests::observe_pid_change_is_unchanged_but_updates_pid ... ok
[INFO] [stdout] test tui::read_only::tests::observe_unchanged_when_state_steady ... ok
[INFO] [stdout] test tui::read_only::tests::observe_released_when_locked_to_editable ... ok
[INFO] [stdout] test tui::read_only::tests::observe_updates_last_poll_so_should_poll_returns_false_until_interval ... ok
[INFO] [stdout] test tui::run_dialog::tests::build_run_command_with_current_branch ... ok
[INFO] [stdout] test tui::run_dialog::tests::build_run_command_without_current_branch ... ok
[INFO] [stdout] test tui::run_dialog::tests::capital_n_also_enters_naming_branch ... ok
[INFO] [stdout] test tui::run_dialog::tests::ctrl_c_cancels_in_choosing ... ok
[INFO] [stdout] test tui::run_dialog::tests::dispatch_current_passes_current_branch_for_each_target ... ok
[INFO] [stdout] test tui::run_dialog::tests::dispatch_multi_plan_forces_current_branch_even_on_new_branch ... ok
[INFO] [stdout] test tui::run_dialog::tests::dispatch_new_branch_custom_uses_current_branch_for_single_plan ... ok
[INFO] [stdout] test tui::run_dialog::tests::dispatch_new_branch_default_omits_current_branch_for_single_plan ... ok
[INFO] [stdout] test tui::run_dialog::tests::dispatch_pending_or_cancelled_spawns_nothing ... ok
[INFO] [stdout] test tui::run_dialog::tests::down_twice_is_inert_and_later_enter_still_picks_current ... ok
[INFO] [stdout] test tui::run_dialog::tests::enter_picks_current_branch ... ok
[INFO] [stdout] test tui::run_dialog::tests::esc_cancels_in_choosing ... ok
[INFO] [stdout] test tui::run_dialog::tests::dispatch_multi_plan_current_outcome_passes_current_branch ... ok
[INFO] [stdout] test tui::run_dialog::tests::j_is_inert_and_later_enter_still_picks_current ... ok
[INFO] [stdout] test tui::run_dialog::tests::k_and_up_are_inert_and_enter_still_picks_current ... ok
[INFO] [stdout] test tui::run_dialog::tests::mixed_navigation_then_enter_is_still_current ... ok
[INFO] [stdout] test tui::run_dialog::tests::n_enters_naming_branch_with_default ... ok
[INFO] [stdout] test tui::run_dialog::tests::naming_backspace_removes_last_char ... ok
[INFO] [stdout] test tui::run_dialog::tests::naming_ctrl_modified_chars_are_ignored ... ok
[INFO] [stdout] test tui::run_dialog::tests::naming_ctrl_c_cancels ... ok
[INFO] [stdout] test tui::run_dialog::tests::naming_empty_enter_is_pending_and_preserves_buffer ... ok
[INFO] [stdout] test tui::run_dialog::tests::naming_enter_emits_new_branch ... ok
[INFO] [stdout] test tui::run_dialog::tests::naming_typing_appends_to_buffer ... ok
[INFO] [stdout] test tui::run_dialog::tests::naming_esc_cancels ... ok
[INFO] [stdout] test tui::run_dialog::tests::naming_whitespace_only_enter_is_pending ... ok
[INFO] [stdout] test tui::run_dialog::tests::navigation_then_n_still_enters_naming_phase ... ok
[INFO] [stdout] test tui::run_dialog::tests::process_run_spawner_surfaces_spawn_error_for_missing_binary ... ok
[INFO] [stdout] test tui::run_dialog::tests::process_run_spawner_actually_spawns ... ok
[INFO] [stdout] test tui::run_dialog::tests::render_naming_writes_buffer ... ok
[INFO] [stdout] test tui::run_dialog::tests::render_choosing_writes_three_buttons ... ok
[INFO] [stdout] test tui::run_dialog::tests::unrecognized_key_in_choosing_is_pending ... ok
[INFO] [stdout] test tui::run_dialog::tests::user_can_edit_default_branch_then_submit ... ok
[INFO] [stdout] test tui::selection::tests::clear_empties_selection ... ok
[INFO] [stdout] test tui::selection::tests::index_of_unselected_is_none ... ok
[INFO] [stdout] test tui::selection::tests::new_is_empty ... ok
[INFO] [stdout] test tui::selection::tests::re_toggling_a_middle_key_renumbers_the_rest ... ok
[INFO] [stdout] test tui::selection::tests::re_toggling_after_remove_appends_at_the_end ... ok
[INFO] [stdout] test tui::selection::tests::toggle_adds_then_removes ... ok
[INFO] [stdout] test tui::selection::tests::toggle_preserves_insertion_order ... ok
[INFO] [stdout] test tui::selection::tests::works_with_owned_string_keys ... ok
[INFO] [stdout] test tui::skip_dialog::tests::confirmed_choices_map_to_park_kinds ... ok
[INFO] [stdout] test tui::skip_dialog::tests::ctrl_c_returns_cancelled ... ok
[INFO] [stdout] test tui::skip_dialog::tests::default_focus_is_stash ... ok
[INFO] [stdout] test tui::skip_dialog::tests::down_twice_then_enter_confirms_discard ... ok
[INFO] [stdout] test tui::skip_dialog::tests::enter_on_default_confirms_stash ... ok
[INFO] [stdout] test tui::skip_dialog::tests::esc_returns_cancelled ... ok
[INFO] [stdout] test tui::skip_dialog::tests::j_clamps_at_bottom ... ok
[INFO] [stdout] test tui::skip_dialog::tests::j_then_enter_confirms_commit ... ok
[INFO] [stdout] test tui::read_only::tests::detect_returns_editable_when_no_row ... ok
[INFO] [stdout] test tui::skip_dialog::tests::k_clamps_at_top_and_enter_still_confirms_stash ... ok
[INFO] [stdout] test tui::skip_dialog::tests::rows_are_stash_commit_discard_in_order ... ok
[INFO] [stdout] test tui::skip_dialog::tests::unrecognized_key_is_pending_and_does_not_move ... ok
[INFO] [stdout] test tui::theme::tests::cursor_is_a_highlight_not_a_status_recolor ... ok
[INFO] [stdout] test tui::theme::tests::palette_constants_match_contract ... ok
[INFO] [stdout] test tui::theme::tests::plan_status_color_maps_to_exact_125_hex ... ok
[INFO] [stdout] test tui::theme::tests::reviewing_and_toast_info_share_hex_but_are_separate_tokens ... ok
[INFO] [stdout] test tui::theme::tests::same_concept_one_color_across_step_and_plan_surfaces ... ok
[INFO] [stdout] test tui::theme::tests::status_colors_are_distinct ... ok
[INFO] [stdout] test tui::theme::tests::step_status_color_maps_to_exact_125_hex ... ok
[INFO] [stdout] test tui::theme::tests::waiting_color_is_light_theme_safe ... ok
[INFO] [stdout] test tui::toast::tests::clear_drops_all_toasts ... ok
[INFO] [stdout] test tui::toast::tests::custom_ttl_is_honored ... ok
[INFO] [stdout] test tui::toast::tests::default_ttl_is_three_seconds ... ok
[INFO] [stdout] test tui::toast::tests::dismiss_pops_current_toast ... ok
[INFO] [stdout] test tui::toast::tests::empty_queue_has_no_current ... ok
[INFO] [stdout] test tui::read_only::tests::detect_locks_when_parent_tui_pid_is_null_and_pid_is_external ... ok
[INFO] [stdout] test tui::toast::tests::kind_maps_to_palette_color ... ok
[INFO] [stdout] test tui::read_only::tests::detect_returns_editable_when_lock_belongs_to_our_spawned_child ... ok
[INFO] [stdout] test tui::skip_dialog::tests::render_smoke_writes_all_labels_and_title ... ok
[INFO] [stdout] test tui::read_only::tests::detect_locks_when_external_holds_despite_known_child ... ok
[INFO] [stdout] test tui::toast::tests::most_recent_push_wins ... ok
[INFO] [stdout] test tui::toast::tests::prune_drops_expired_only ... ok
[INFO] [stdout] test tui::toast::tests::prune_uses_strict_inequality_at_deadline ... ok
[INFO] [stdout] test tui::toast::tests::push_makes_toast_current ... ok
[INFO] [stdout] test tui::toast::tests::push_with_color_overrides_kind_color ... ok
[INFO] [stdout] test tui::views::answer_modal::tests::blocker_variant_has_no_options_and_resolves_freeform_only ... ok
[INFO] [stdout] test tui::run_dialog::tests::render_uses_plural_title_for_multi_plan ... ok
[INFO] [stdout] test tui::views::answer_modal::tests::enter_on_focused_option_list_accepts_preselected_one ... ok
[INFO] [stdout] test tui::views::answer_modal::tests::enter_resolves_with_chosen_option_and_comment ... ok
[INFO] [stdout] test tui::views::answer_modal::tests::esc_and_ctrl_c_cancel ... ok
[INFO] [stdout] test tui::views::answer_modal::tests::focused_options_override_stale_freeform_text ... ok
[INFO] [stdout] test tui::views::answer_modal::tests::freeform_path_resolves_with_typed_answer ... ok
[INFO] [stdout] test tui::views::answer_modal::tests::from_open_question_with_no_suggestions_focuses_freeform ... ok
[INFO] [stdout] test tui::views::answer_modal::tests::from_open_question_maps_suggestions_to_priority_options ... ok
[INFO] [stdout] test tui::views::answer_modal::tests::m_key_requests_comment_editor ... ok
[INFO] [stdout] test tui::read_only::tests::detect_only_inspects_requested_project ... ok
[INFO] [stdout] test tui::views::answer_modal::tests::no_agent_decide_shortcut_enter_is_pending_until_human_answers ... ok
[INFO] [stdout] test tui::views::answer_modal::tests::options_render_in_priority_order_with_number_one_preselected ... ok
[INFO] [stdout] test tui::views::answer_modal::tests::resume_ctrl_c_declines ... ok
[INFO] [stdout] test tui::views::answer_modal::tests::resume_enter_accepts_default ... ok
[INFO] [stdout] test tui::views::answer_modal::tests::resume_esc_declines ... ok
[INFO] [stdout] test tui::views::answer_modal::tests::resume_modified_y_n_are_pending ... ok
[INFO] [stdout] test tui::views::answer_modal::tests::resume_n_declines ... ok
[INFO] [stdout] test tui::views::answer_modal::tests::resume_preserves_current_branch_flag ... ok
[INFO] [stdout] test tui::views::answer_modal::tests::resume_unrecognized_is_pending ... ok
[INFO] [stdout] test tui::views::answer_modal::tests::resume_y_accepts ... ok
[INFO] [stdout] test tui::views::answer_modal::tests::selected_option_survives_focus_moving_to_comment_field ... ok
[INFO] [stdout] test tui::views::answer_modal::tests::test_inbox_modal_renders_options_for_auto_blocker ... ok
[INFO] [stdout] test tui::views::archived_list::tests::action_targets_empty_when_no_tiles_and_no_selection ... ok
[INFO] [stdout] test tui::views::archived_list::tests::action_targets_returns_cursor_when_no_selection ... ok
[INFO] [stdout] test tui::views::archived_list::tests::action_targets_returns_selection_in_pick_order ... ok
[INFO] [stdout] test tui::views::archived_list::tests::click_accounts_for_scroll_offset ... ok
[INFO] [stdout] test tui::views::archived_list::tests::click_below_last_tile_is_ignored ... ok
[INFO] [stdout] test tui::views::archived_list::tests::click_on_highlighted_tile_requests_enter ... ok
[INFO] [stdout] test tui::views::archived_list::tests::click_on_other_tile_selects_only ... ok
[INFO] [stdout] test tui::views::archived_list::tests::escape_with_no_selection_pops ... ok
[INFO] [stdout] test tui::views::archived_list::tests::escape_with_selection_clears_only ... ok
[INFO] [stdout] test tui::views::archived_list::tests::help_intercepts_question_mark_and_esc ... ok
[INFO] [stdout] test tui::views::archived_list::tests::help_state_default_hidden ... ok
[INFO] [stdout] test tui::views::archived_list::tests::jump_top_and_bottom ... ok
[INFO] [stdout] test tui::views::archived_list::tests::navigate_down_advances_and_wraps ... ok
[INFO] [stdout] test tui::views::archived_list::tests::navigate_up_wraps_to_bottom ... ok
[INFO] [stdout] test tui::views::archived_list::tests::navigation_on_empty_is_noop ... ok
[INFO] [stdout] test tui::views::archived_list::tests::palette_close_drops_state ... ok
[INFO] [stdout] test tui::views::archived_list::tests::palette_default_inactive ... ok
[INFO] [stdout] test tui::views::archived_list::tests::palette_enter_yields_submit_outcome_and_parses ... ok
[INFO] [stdout] test tui::views::archived_list::tests::palette_esc_yields_cancel_outcome ... ok
[INFO] [stdout] test tui::views::archived_list::tests::refresh_tiles_clears_selection_and_clamps_cursor ... ok
[INFO] [stdout] test tui::views::archived_list::tests::render_tiles_renders_archived_plans ... ok
[INFO] [stdout] test tui::views::archived_list::tests::palette_open_records_prefix ... ok
[INFO] [stdout] test tui::views::archived_list::tests::refresh_tiles_resets_when_list_empties ... ok
[INFO] [stdout] test tui::views::archived_list::tests::render_tiles_empty_writes_placeholder ... ok
[INFO] [stdout] test tui::views::archived_list::tests::scroll_wheel_maps_to_k_and_j ... ok
[INFO] [stdout] test tui::views::archived_list::tests::toggle_selection_empty_is_noop ... ok
[INFO] [stdout] test tui::views::create_plan::tests::back_tab_cycles_backward ... ok
[INFO] [stdout] test tui::views::create_plan::tests::backspace_pops_focused_buffer ... ok
[INFO] [stdout] test tui::views::archived_list::tests::tile_click_before_first_draw_is_safe ... ok
[INFO] [stdout] test tui::views::archived_list::tests::draw_renders_breadcrumb_with_archived_header ... ok
[INFO] [stdout] test tui::views::archived_list::tests::toggle_selection_uses_plan_id ... ok
[INFO] [stdout] test tui::views::create_plan::tests::ctrl_modified_chars_are_ignored ... ok
[INFO] [stdout] test tui::views::archived_list::tests::request_pop_sets_flag ... ok
[INFO] [stdout] test tui::views::create_plan::tests::cancelled_by_esc ... ok
[INFO] [stdout] test tui::views::create_plan::tests::cancelled_by_ctrl_c ... ok
[INFO] [stdout] test tui::views::create_plan::tests::enter_advances_from_slug_to_description ... ok
[INFO] [stdout] test tui::views::create_plan::tests::enter_on_tests_with_only_whitespace_slug_bounces_to_slug ... ok
[INFO] [stdout] test tui::views::create_plan::tests::new_starts_focused_on_slug ... ok
[INFO] [stdout] test tui::views::create_plan::tests::enter_advances_from_description_to_tests ... ok
[INFO] [stdout] test tui::views::create_plan::tests::parse_tests_drops_empty_entries ... ok
[INFO] [stdout] test tui::views::create_plan::tests::enter_on_tests_with_empty_slug_bounces_to_slug ... ok
[INFO] [stdout] test tui::views::create_plan::tests::parse_tests_empty_string_returns_empty ... ok
[INFO] [stdout] test tui::views::create_plan::tests::parse_tests_only_commas_returns_empty ... ok
[INFO] [stdout] test tui::views::create_plan::tests::parse_tests_splits_on_commas_and_trims ... ok
[INFO] [stdout] test tui::views::create_plan::tests::parse_tests_single_command ... ok
[INFO] [stdout] test tui::views::create_plan::tests::submit_with_empty_tests_returns_empty_vec ... ok
[INFO] [stdout] test tui::views::create_plan::tests::tab_cycles_forward ... ok
[INFO] [stdout] test tui::views::create_plan::tests::submit_trims_leading_trailing_whitespace ... ok
[INFO] [stdout] test tui::views::create_plan::tests::enter_on_tests_with_filled_slug_submits ... ok
[INFO] [stdout] test tui::views::create_plan::tests::render_does_not_panic_on_tiny_terminal ... ok
[INFO] [stdout] test tui::views::create_plan::tests::typing_lands_in_focused_buffer ... ok
[INFO] [stdout] test tui::views::inbox::tests::esc_mid_run_through_returns_to_list_with_remaining_open ... ok
[INFO] [stdout] test tui::views::inbox::tests::g_and_capital_g_jump_to_top_and_bottom ... ok
[INFO] [stdout] test tui::views::inbox::tests::mouse_wheel_moves_cursor_in_list_mode ... ok
[INFO] [stdout] test tui::views::inbox::tests::editor_handoff_outcomes_bubble_and_apply ... ok
[INFO] [stdout] test tui::views::inbox::tests::answering_n_advances_through_all_then_ends ... ok
[INFO] [stdout] test tui::views::inbox::tests::navigation_wraps_across_open_and_resolved_rows ... ok
[INFO] [stdout] test tui::views::inbox::tests::open_count_badge_counts_only_open_items ... ok
[INFO] [stdout] test tui::views::inbox::tests::resolve_outcome_bubbles_id_resolution_and_comment ... ok
[INFO] [stdout] test tui::views::inbox::tests::q_pops_the_inbox ... ok
[INFO] [stdout] test tui::views::create_plan::tests::render_shows_title_and_field_labels ... ok
[INFO] [stdout] test tui::views::archived_list::tests::read_only_state_renders_lock_banner ... ok
[INFO] [stdout] test tui::views::inbox::tests::run_through_skips_resolved_items_and_starts_at_first_open ... ok
[INFO] [stdout] test tui::views::inbox::tests::start_run_through_noop_when_nothing_open ... ok
[INFO] [stdout] test tui::views::inbox::tests::run_through_visits_every_open_item_under_out_of_order_resolution ... ok
[INFO] [stdout] test tui::views::inbox::tests::sync_preserves_cursor_by_interruption_id ... ok
[INFO] [stdout] test tui::views::inbox::tests::sync_ends_run_through_if_active_target_resolved_out_of_band ... ok
[INFO] [stdout] test tui::views::inbox::tests::sync_advances_past_externally_resolved_target_to_remaining_open ... ok
[INFO] [stdout] test tui::views::inbox_ui::tests::body_preview_truncates_by_display_width ... ok
[INFO] [stdout] test tui::views::inbox_ui::tests::renders_toast_overlay ... ok
[INFO] [stdout] test tui::views::outline_view::tests::blocked_overlay_is_derived_like_question_status ... ok
[INFO] [stdout] test tui::views::outline_view::tests::corrective_step_carries_corrects_marker ... ok
[INFO] [stdout] test tui::views::outline_view::tests::esc_pops_focus_only_when_focused_else_passthrough ... ok
[INFO] [stdout] test tui::views::outline_view::tests::focus_is_pure_no_storage_no_scheduler_effect ... ok
[INFO] [stdout] test tui::views::outline_view::tests::focus_nests_and_pop_unwinds_one_level ... ok
[INFO] [stdout] test tui::views::outline_view::tests::focus_root_alone_when_no_dependents ... ok
[INFO] [stdout] test tui::views::outline_view::tests::focus_shows_only_downstream_dependents_cone ... ok
[INFO] [stdout] test tui::views::outline_view::tests::focus_to_crumb_truncates_stack ... ok
[INFO] [stdout] test tui::views::outline_view::tests::handle_key_jumps_to_top_and_bottom ... ok
[INFO] [stdout] test tui::views::outline_view::tests::handle_key_open_step_returns_cursor_step_id ... ok
[INFO] [stdout] test tui::views::outline_view::tests::join_step_lists_every_dependency_by_short_id ... ok
[INFO] [stdout] test tui::views::outline_view::tests::navigation_wraps_and_tracks_cursor ... ok
[INFO] [stdout] test tui::views::outline_view::tests::pop_focus_to_root_clears_whole_stack_in_one_jump ... ok
[INFO] [stdout] test tui::views::outline_view::tests::review_status_defaults_to_pending_and_surfaces_verdict ... ok
[INFO] [stdout] test tui::views::inbox_ui::tests::empty_inbox_renders_placeholder ... ok
[INFO] [stdout] test tui::views::outline_view::tests::tree_prefix_drawn_within_visible_set_and_independent_roots_share_no_stem ... ok
[INFO] [stdout] test tui::views::outline_view::tests::sync_preserves_cursor_by_id_and_drops_stale_focus ... ok
[INFO] [stdout] test tui::views::outline_view::tests::unrelated_key_passes_through ... ok
[INFO] [stdout] test tui::views::outline_view::tests::tree_prefix_rebases_under_focus_cone ... ok
[INFO] [stdout] test tui::views::outline_view::tests::visible_rows_cache_invalidates_on_state_changes ... ok
[INFO] [stdout] test tui::views::outline_view::tests::visible_rows_match_topological_outline_order_and_depth ... ok
[INFO] [stdout] test tui::views::outline_view::tests::visible_rows_cache_populates_lazily_and_survives_cursor_moves ... ok
[INFO] [stdout] test tui::views::outline_view::tests::z_and_shift_z_keys_drive_focus ... ok
[INFO] [stdout] test tui::views::inbox_ui::tests::list_row_marks_long_body_as_truncated ... ok
[INFO] [stdout] test tui::views::plan_dependencies::tests::a_opens_picker_when_candidates_exist ... ok
[INFO] [stdout] test tui::views::plan_dependencies::tests::a_with_no_candidates_toasts_and_stays_in_list ... ok
[INFO] [stdout] test tui::views::plan_dependencies::tests::ctrl_c_pops_in_either_mode ... ok
[INFO] [stdout] test tui::views::plan_dependencies::tests::d_emits_remove_request_for_cursor_row ... ok
[INFO] [stdout] test tui::views::plan_dependencies::tests::d_with_empty_deps_is_pending ... ok
[INFO] [stdout] test tui::views::inbox_ui::tests::list_row_marks_multiline_body_as_readable_in_modal ... ok
[INFO] [stdout] test tui::views::inbox_ui::tests::renders_open_count_badge_and_items ... ok
[INFO] [stdout] test tui::views::inbox_ui::tests::blocker_modal_states_no_options ... ok
[INFO] [stdout] test tui::views::plan_dependencies::tests::esc_pops_in_list_mode ... ok
[INFO] [stdout] test tui::views::plan_dependencies::tests::g_jumps_to_top_capital_g_to_bottom ... ok
[INFO] [stdout] test tui::views::plan_dependencies::tests::handle_key_esc_closes_help_without_popping ... ok
[INFO] [stdout] test tui::views::plan_dependencies::tests::handle_key_question_mark_opens_help_in_list_mode ... ok
[INFO] [stdout] test tui::views::plan_dependencies::tests::handle_key_swallows_input_while_help_visible ... ok
[INFO] [stdout] test tui::views::plan_dependencies::tests::help_state_default_hidden ... ok
[INFO] [stdout] test tui::views::plan_dependencies::tests::j_moves_list_cursor_down_clamped ... ok
[INFO] [stdout] test tui::views::plan_dependencies::tests::k_moves_list_cursor_up_clamped ... ok
[INFO] [stdout] test tui::views::plan_dependencies::tests::new_starts_in_list_mode_with_zero_cursor ... ok
[INFO] [stdout] test tui::views::plan_dependencies::tests::picker_enter_emits_add_request ... ok
[INFO] [stdout] test tui::views::inbox_ui::tests::run_through_renders_modal_with_priority_options ... ok
[INFO] [stdout] test tui::views::plan_dependencies::tests::picker_esc_falls_back_to_list_mode ... ok
[INFO] [stdout] test tui::views::plan_dependencies::tests::picker_q_falls_back_to_list_mode ... ok
[INFO] [stdout] test tui::views::plan_dependencies::tests::picker_j_k_navigates_clamped ... ok
[INFO] [stdout] test tui::views::plan_dependencies::tests::refresh_clamps_cursors_to_new_lengths ... ok
[INFO] [stdout] test tui::views::plan_dependencies::tests::refresh_with_empty_lists_zeroes_cursors ... ok
[INFO] [stdout] test tui::views::plan_dependencies::tests::render_empty_list_shows_placeholder ... ok
[INFO] [stdout] test tui::views::plan_dependencies::tests::q_pops_in_list_mode ... ok
[INFO] [stdout] test tui::views::plan_dependencies::tests::unknown_key_in_list_is_pending ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::click_accounts_for_scroll_offset ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::click_on_border_or_outside_is_ignored ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::click_on_focused_rerooted_outline_resolves_correct_step ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::click_on_highlighted_step_enters_detail ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::click_on_nonlinear_dag_resolves_outline_row_not_steps_index ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::click_on_other_step_selects_only ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::divider_drag_takes_precedence_over_step_click ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::execution_log_cache_covers_attempts_by_latest_attempt ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::handle_mouse_no_op_before_first_draw ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::keyboard_navigation_works_during_drag ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::linear_no_edge_mouse_behavior_unchanged_regression ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::palette_close_drops_state ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::palette_default_inactive ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::palette_enter_yields_submit_outcome_and_parses ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::palette_esc_yields_cancel_outcome ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::palette_open_records_prefix ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::scroll_wheel_maps_to_k_and_j ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::scroll_wheel_moves_outline_cursor_on_nonlinear_dag ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::set_preferred_run_mode_updates_r_binding_mode ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::split_drag_clamps_to_20_and_80 ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::split_drag_press_off_divider_does_not_arm ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::split_drag_updates_split_pct ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::split_drag_uses_body_relative_columns ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::step_click_before_first_draw_is_safe ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_app_creation ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_attach_subscription_marks_run_live ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_attach_subscription_resets_prior_tails_and_phase ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_cancel_add_step ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_clear_selection ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_compute_append_below_sort_key_at_bottom ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_compute_append_below_sort_key_empty_steps ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_compute_append_below_sort_key_in_middle ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_compute_insert_above_sort_key_at_top ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_compute_insert_above_sort_key_empty_steps ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_compute_insert_above_sort_key_in_middle ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_compute_move_down_sort_key_at_bottom_is_none ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_compute_move_down_sort_key_in_middle ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_compute_move_down_sort_key_swaps_into_bottom_slot ... ok
[INFO] [stdout] test tui::views::plan_dependencies::tests::render_picker_mode_does_not_panic ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_compute_move_up_sort_key_at_top_is_none ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_compute_move_up_sort_key_in_middle ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_compute_move_up_sort_key_swaps_into_top_slot ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_confirm_add_step_above ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_confirm_add_step_below ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_confirm_add_step_empty_title ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_confirm_add_step_in_normal_mode_returns_none ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_current_in_progress_step ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_current_phase_prefers_subscription_over_db_snapshot ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_delete_targets_empty_steps ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_delete_targets_returns_cursor_when_no_selection ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_delete_targets_uses_selection_in_pick_order ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_detach_subscription_clears_run_live_state ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_elapsed_secs_clamps_negative_duration_to_zero ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_elapsed_secs_falls_back_to_started_at ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_elapsed_secs_no_live_run_returns_zero ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_elapsed_secs_survives_view_reentry ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_enter_add_mode_above ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_elapsed_secs_uses_phase_started_at ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_enter_add_mode_below ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_escape_selection_clears_when_present ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_escape_selection_noop_when_empty ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_input_mode_variants ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_has_tail_output_false_until_first_chunk ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_insert_step_at_position ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_move_down_target_at_bottom_returns_none ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_move_down_target_returns_step_id ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_move_targets_empty_steps ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_move_up_target_at_top_returns_none ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_move_up_target_returns_step_id ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_navigate_down ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_navigate_down_wraps ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_navigate_empty_steps ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_navigate_up ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_navigate_up_wraps ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_no_in_progress_step ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_note_step_started_latches_step_num_from_step_list ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_note_step_started_unknown_id_clears_step_num ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_push_harness_line_caps_at_buffer_lines ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_read_only_default_is_editable ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_refresh_steps_clamps_cursor_into_new_range ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_refresh_steps_resets_cursor_when_empty ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_request_pop ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_reset_target_empty_steps ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_reset_target_returns_cursor_step_id ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_refresh_steps_clears_selection ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_scroll_tails_anchored_when_new_chunk_arrives ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_scroll_tails_older_then_newer_round_trip ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_set_read_only_records_state ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_skip_complete_step_rejected ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_status_indicator ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_sync_steps_clamps_cursor_when_target_disappears ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_skip_current_step ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_sync_steps_drops_selection_for_disappeared_step ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_sync_steps_preserves_cursor_by_id ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_sync_steps_preserves_selection_when_steps_survive ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_toggle_selection_empty_steps_is_noop ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_toggle_selection_uses_step_id ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_update_live_run_clears_run_state_when_run_ends ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_update_live_run_marks_run_live_when_step_appears ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_update_live_run_reflects_new_phase_timestamp_on_step_change ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_update_step_status ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_update_step_status_unknown_id ... ok
[INFO] [stdout] test tui::views::plan_detail::tests::test_visible_harness_tail_returns_newest_window ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::help_intercepts_question_mark_and_esc ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::help_state_default_hidden ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_add_mode_backspace ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_a_enters_add_mode_below ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_add_mode_ctrl_c_pops ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_add_mode_does_not_navigate ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_add_mode_enter_confirms_above ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_add_mode_enter_confirms_below ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_add_mode_enter_empty_is_noop ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_add_mode_esc_cancels ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_add_mode_ignores_modified_chars ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_add_mode_typing ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_ctrl_c_pops ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_d_returns_delete_with_cursor_target ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_d_returns_delete_with_selection ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_d_with_no_steps_is_noop ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_down_arrow_navigates_down ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_enter_emits_open_step_detail_for_cursor ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_enter_noop_when_no_visible_row_even_with_stale_flat_index ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_enter_with_no_steps_is_noop ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_enter_resolves_through_outline_under_focus_not_flat_index ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_esc_clears_selection_without_popping ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_esc_dismisses_toast_first_and_preserves_selection ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_esc_with_no_selection_is_noop ... ok
[INFO] [stdout] test tui::views::plan_dependencies::tests::render_list_mode_does_not_panic ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_esc_with_no_toast_falls_through_to_clear_selection ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_i_enters_add_mode_above ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_h_pops ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_k_navigates_up ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_j_navigates_down ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_l_emits_open_step_detail ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_live_run_still_allows_controls ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_left_arrow_pops ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_live_run_suppresses_mutating_bindings ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_locked_still_allows_navigation ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_locked_still_allows_q_pop ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_locked_still_allows_r_refresh ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_locked_still_allows_shift_j_tail_scroll_when_subscription_has_output ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_locked_still_allows_shift_s_stop ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_locked_suppresses_a_add_below ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_locked_suppresses_d_delete ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_locked_suppresses_i_add_above ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_locked_suppresses_s_skip ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_locked_suppresses_shift_j_move_down_without_subscription ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_q_pops ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_locked_suppresses_shift_k_move_up_without_subscription ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_r_returns_refresh ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_r_with_no_steps_still_refreshes ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_right_arrow_emits_open_step_detail ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_locked_suppresses_shift_r_run ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_s_skips_in_progress_step ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_shift_d_emits_open_dependencies_action ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_shift_j_at_bottom_is_noop ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_shift_h_emits_open_hooks_action ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_shift_j_falls_through_when_subscription_has_no_output_yet ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_shift_j_returns_move_down ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_shift_k_at_top_is_noop ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_shift_j_scrolls_tails_when_subscription_has_output ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_shift_j_falls_through_to_move_step_when_no_subscription ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_shift_k_returns_move_up ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_shift_k_scrolls_tails_when_subscription_has_output ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_shift_p_emits_toggle_pause_when_run_live ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_shift_p_is_noop_when_no_run_live ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_shift_s_emits_stop_action ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_space_toggles_selection ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_unknown_key_is_noop ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_up_arrow_navigates_up ... ok
[INFO] [stdout] test tui::views::plan_detail_input::tests::test_shift_r_emits_run_action ... ok
[INFO] [stdout] test tui::views::plan_detail_ui::tests::breadcrumb_shows_ralph_arrow_slug ... ok
[INFO] [stdout] test tui::views::plan_detail_ui::tests::hint_bar_advertises_core_plan_detail_keybinds ... ok
[INFO] [stdout] test tui::views::plan_detail_ui::tests::live_hint_bar_advertises_pause_and_stop_keybinds ... ok
[INFO] [stdout] test tui::views::plan_detail_ui::tests::right_pane_attempt_with_no_changes_and_user_skipped_reasons ... ok
[INFO] [stdout] test tui::views::plan_detail_ui::tests::right_pane_no_breakdown_for_complete_step_with_zero_attempts ... ok
[INFO] [stdout] test tui::views::plan_detail_ui::tests::right_pane_multi_attempt_mixed_outcomes_failed_step ... ok
[INFO] [stdout] test tui::views::plan_detail_ui::tests::right_pane_hides_tails_when_cursor_on_other_step ... ok
[INFO] [stdout] test tui::views::plan_detail_ui::tests::right_pane_omits_tests_when_plan_has_none ... ok
[INFO] [stdout] test tui::views::plan_detail_ui::tests::right_pane_renders_aborted_status ... ok
[INFO] [stdout] test tui::views::plan_detail_ui::tests::right_pane_renders_complete_status ... ok
[INFO] [stdout] test tui::views::plan_detail_ui::tests::right_pane_renders_failed_status ... ok
[INFO] [stdout] test tui::views::plan_detail_ui::tests::right_pane_renders_in_progress_attempt_counter ... ok
[INFO] [stdout] test tui::read_only::tests::detect_returns_locked_when_parent_tui_pid_is_a_different_tui ... ok
[INFO] [stdout] test tui::views::plan_detail_ui::tests::right_pane_omits_running_banner_when_no_live_run ... ok
[INFO] [stdout] test tui::views::plan_detail_ui::tests::right_pane_renders_full_summary_for_pending_step ... ok
[INFO] [stdout] test tui::views::plan_detail_ui::tests::right_pane_renders_step_level_overrides ... ok
[INFO] [stdout] test tui::views::plan_detail_ui::tests::right_pane_renders_skipped_status ... ok
[INFO] [stdout] test tui::views::plan_detail_ui::tests::right_pane_renders_tails_when_cursor_on_live_step ... ok
[INFO] [stdout] test tui::views::plan_detail_ui::tests::right_pane_uses_blocked_overlay_for_open_interruption ... ok
[INFO] [stdout] test tui::views::plan_detail_ui::tests::right_pane_resolves_step_through_outline_cursor ... ok
[INFO] [stdout] test tui::views::plan_detail_ui::tests::right_pane_single_success_attempt_shows_total_and_breakdown ... ok
[INFO] [stdout] test tui::views::plan_detail_ui::tests::right_pane_running_step_keeps_live_timer_not_breakdown ... ok
[INFO] [stdout] test tui::views::plan_detail_ui::tests::test_draw_add_mode ... ok
[INFO] [stdout] test tui::views::plan_detail_ui::tests::test_detail_attempt_counter_uses_config_default ... ok
[INFO] [stdout] test tui::views::plan_detail_ui::tests::test_draw_does_not_panic_with_steps ... ok
[INFO] [stdout] test tui::views::plan_detail_ui::tests::test_status_colors_are_distinct ... ok
[INFO] [stdout] test tui::views::plan_detail_ui::tests::test_list_state_persists_across_frames ... ok
[INFO] [stdout] test tui::views::plan_hooks::tests::a_with_empty_library_toasts_and_stays_in_list ... ok
[INFO] [stdout] test tui::views::plan_hooks::tests::candidates_for_filters_already_attached ... ok
[INFO] [stdout] test tui::views::plan_hooks::tests::ctrl_c_pops_in_any_mode ... ok
[INFO] [stdout] test tui::views::plan_hooks::tests::d_emits_remove_request_for_cursor_row_each_lifecycle ... ok
[INFO] [stdout] test tui::views::plan_hooks::tests::d_with_empty_attachments_is_pending ... ok
[INFO] [stdout] test tui::views::plan_dependencies::tests::end_to_end_add_persists_through_storage ... ok
[INFO] [stdout] test tui::views::plan_hooks::tests::a_opens_lifecycle_picker_when_library_has_hooks ... ok
[INFO] [stdout] test tui::views::plan_dependencies::tests::end_to_end_remove_persists_through_storage ... ok
[INFO] [stdout] test tui::views::plan_hooks::tests::esc_pops_in_list_mode ... ok
[INFO] [stdout] test tui::views::plan_hooks::tests::g_jumps_to_top_capital_g_to_bottom ... ok
[INFO] [stdout] test tui::views::plan_detail_ui::tests::running_indicator_visible_in_chrome_when_live ... ok
[INFO] [stdout] test tui::views::plan_hooks::tests::hook_enter_emits_add_request_for_each_lifecycle ... ok
[INFO] [stdout] test tui::views::plan_hooks::tests::hook_picker_esc_falls_back_to_lifecycle_picker ... ok
[INFO] [stdout] test tui::views::plan_detail_ui::tests::test_draw_does_not_panic_empty_steps ... ok
[INFO] [stdout] test tui::views::plan_hooks::tests::k_moves_list_cursor_up_clamped ... ok
[INFO] [stdout] test tui::views::plan_hooks::tests::lifecycle_enter_with_candidates_opens_hook_picker ... ok
[INFO] [stdout] test tui::views::plan_hooks::tests::hook_picker_navigates_clamped ... ok
[INFO] [stdout] test tui::views::plan_hooks::tests::j_moves_list_cursor_down_clamped ... ok
[INFO] [stdout] test tui::views::plan_hooks::tests::lifecycle_picker_esc_falls_back_to_list_mode ... ok
[INFO] [stdout] test tui::views::plan_hooks::tests::lifecycle_picker_navigates_clamped ... ok
[INFO] [stdout] test tui::views::plan_hooks::tests::new_starts_in_list_mode_with_zero_cursor ... ok
[INFO] [stdout] test tui::views::plan_hooks::tests::new_sorts_attachments_by_lifecycle_then_name ... ok
[INFO] [stdout] test tui::views::plan_hooks::tests::refresh_clamps_cursors_to_new_lengths ... ok
[INFO] [stdout] test tui::views::plan_hooks::tests::q_pops_in_list_mode ... ok
[INFO] [stdout] test tui::views::plan_hooks::tests::refresh_with_empty_lists_zeroes_cursors ... ok
[INFO] [stdout] test tui::views::plan_hooks::tests::render_empty_list_shows_placeholder ... ok
[INFO] [stdout] test tui::views::plan_hooks::tests::render_hook_picker_titles_with_chosen_lifecycle ... ok
[INFO] [stdout] test tui::views::plan_hooks::tests::render_lifecycle_picker_lists_all_four_lifecycles ... ok
[INFO] [stdout] test tui::views::plan_hooks::tests::unknown_key_in_list_is_pending ... ok
[INFO] [stdout] test tui::views::plan_hooks::tests::lifecycle_enter_with_no_remaining_candidates_toasts ... ok
[INFO] [stdout] test tui::views::plan_list::tests::archive_targets_empty_tiles_no_selection ... ok
[INFO] [stdout] test tui::views::plan_list::tests::archive_targets_empty_when_cursor_on_archived_sentinel ... ok
[INFO] [stdout] test tui::views::plan_list::tests::archive_targets_returns_cursor_when_no_selection ... ok
[INFO] [stdout] test tui::views::plan_list::tests::archive_targets_returns_selection_in_order_when_present ... ok
[INFO] [stdout] test tui::views::plan_list::tests::archived_tile_visible_when_count_positive ... ok
[INFO] [stdout] test tui::views::plan_list::tests::click_accounts_for_scroll_offset_in_tiles ... ok
[INFO] [stdout] test tui::views::plan_list::tests::click_below_last_tile_is_ignored ... ok
[INFO] [stdout] test tui::views::plan_list::tests::archived_tile_invisible_when_count_zero ... ok
[INFO] [stdout] test tui::views::plan_list::tests::click_on_archived_sentinel_selects_it ... ok
[INFO] [stdout] test tui::views::plan_list::tests::click_on_highlighted_tile_opens_it ... ok
[INFO] [stdout] test tui::views::plan_list::tests::click_on_other_tile_selects_only ... ok
[INFO] [stdout] test tui::views::plan_list::tests::cursor_plan_empty_returns_none ... ok
[INFO] [stdout] test tui::views::plan_list::tests::cursor_plan_returns_highlighted_plan ... ok
[INFO] [stdout] test tui::views::plan_list::tests::cursor_plan_returns_none_when_on_archived_sentinel ... ok
[INFO] [stdout] test tui::views::plan_list::tests::divider_drag_takes_precedence_over_tile_click ... ok
[INFO] [stdout] test tui::views::plan_hooks::tests::render_list_shows_lifecycle_label_for_each_variant ... ok
[INFO] [stdout] test tui::views::plan_list::tests::draw_re_keys_right_pane_when_cursor_moves_to_a_different_plan ... ok
[INFO] [stdout] test tui::views::plan_dependencies::tests::cycle_pre_check_rejects_back_edge ... ok
[INFO] [stdout] test tui::views::plan_dependencies::tests::cycle_pre_check_rejects_self_edge ... ok
[INFO] [stdout] test tui::views::plan_list::tests::draw_renders_toast_text_over_bottom_row ... ok
[INFO] [stdout] test tui::views::plan_list::tests::draw_re_renders_after_drag_with_new_split_geometry ... ok
[INFO] [stdout] test tui::views::plan_list::tests::draw_splits_body_into_left_and_right_panes ... ok
[INFO] [stdout] test tui::views::plan_list::tests::draw_right_pane_blank_for_archived_tile_cursor ... ok
[INFO] [stdout] test tui::views::plan_list::tests::handle_mouse_no_op_before_first_draw_in_plan_list ... ok
[INFO] [stdout] test tui::views::plan_list::tests::help_intercepts_question_mark_and_esc ... ok
[INFO] [stdout] test tui::views::plan_list::tests::highlighted_plan_id_none_for_archived_sentinel ... ok
[INFO] [stdout] test tui::views::plan_list::tests::help_state_default_hidden ... ok
[INFO] [stdout] test tui::views::plan_list::tests::jump_bottom_lands_on_archived_when_visible ... ok
[INFO] [stdout] test tui::views::plan_list::tests::highlighted_plan_id_returns_cursor_target ... ok
[INFO] [stdout] test tui::views::plan_list::tests::highlighted_plan_id_none_for_empty_tiles ... ok
[INFO] [stdout] test tui::views::plan_list::tests::navigation_includes_archived_sentinel_slot ... ok
[INFO] [stdout] test tui::views::plan_list::tests::palette_close_drops_state ... ok
[INFO] [stdout] test tui::views::plan_list::tests::palette_default_inactive ... ok
[INFO] [stdout] test tui::views::plan_list::tests::palette_enter_yields_submit_outcome_and_parses ... ok
[INFO] [stdout] test tui::views::plan_list::tests::palette_esc_yields_cancel_outcome ... ok
[INFO] [stdout] test tui::views::plan_list::tests::palette_open_records_prefix ... ok
[INFO] [stdout] test tui::views::plan_list::tests::refresh_tiles_clamps_cursor_into_new_range ... ok
[INFO] [stdout] test tui::views::plan_list::tests::refresh_tiles_clamps_cursor_to_archived_sentinel_when_only_archived_remain ... ok
[INFO] [stdout] test tui::views::plan_list::tests::refresh_tiles_clears_preview_cache_and_keying ... ok
[INFO] [stdout] test tui::views::plan_list::tests::refresh_tiles_clears_selection ... ok
[INFO] [stdout] test tui::views::plan_list::tests::refresh_tiles_preserves_in_range_cursor ... ok
[INFO] [stdout] test tui::views::plan_list::tests::refresh_tiles_resets_cursor_when_list_empties ... ok
[INFO] [stdout] test tui::views::plan_list::tests::render_archived_sentinel_uses_cursor_border_when_highlighted ... ok
[INFO] [stdout] test tui::views::plan_list::tests::render_tile_anchors_title_flush_left ... ok
[INFO] [stdout] test tui::views::plan_list::tests::render_archived_sentinel_uses_red_border_when_not_highlighted ... ok
[INFO] [stdout] test tui::views::plan_list::tests::render_tile_selected_renders_selection_badge ... ok
[INFO] [stdout] test tui::views::plan_list::tests::render_tile_with_open_questions_renders_teaser ... ok
[INFO] [stdout] test tui::views::plan_list::tests::render_tile_without_open_questions_keeps_status_color ... ok
[INFO] [stdout] test tui::views::plan_list::tests::render_tile_with_open_questions_uses_interrupted_dot ... ok
[INFO] [stdout] test tui::views::plan_list::tests::render_tiles_empty_with_archived_visible_renders_only_sentinel ... ok
[INFO] [stdout] test tui::views::plan_list::tests::render_tiles_renders_archived_sentinel_at_bottom ... ok
[INFO] [stdout] test tui::views::plan_list::tests::request_open_on_archived_sentinel_returns_archived_variant ... ok
[INFO] [stdout] test tui::views::plan_list::tests::request_open_on_plan_when_no_tiles_but_archived_visible ... ok
[INFO] [stdout] test tui::views::plan_list::tests::render_tiles_skips_archived_sentinel_when_count_zero ... ok
[INFO] [stdout] test tui::views::plan_list::tests::scroll_wheel_maps_to_k_and_j_in_plan_list ... ok
[INFO] [stdout] test tui::views::plan_list::tests::split_drag_clamps_to_20_and_80_in_plan_list ... ok
[INFO] [stdout] test tui::views::plan_list::tests::split_drag_press_off_divider_does_not_arm_in_plan_list ... ok
[INFO] [stdout] test tui::views::plan_list::tests::split_drag_updates_split_pct_in_plan_list ... ok
[INFO] [stdout] test tui::views::plan_list::tests::split_drag_uses_body_relative_columns_in_plan_list ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_escape_with_no_selection_is_noop ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_escape_with_selection_clears_and_does_not_quit ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_format_tile_timestamp_created_in_utc ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_format_tile_timestamp_invalid_tz_falls_back_to_utc ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_format_tile_timestamp_two_digit_day ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_format_tile_timestamp_ran_in_local_tz ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_initial_cursor_is_zero ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_jump_bottom ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_jump_top ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_navigate_down_wraps_to_top ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_navigate_down_advances ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_navigate_empty_tiles_is_noop ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_navigate_up_goes_back ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_navigate_up_wraps_to_bottom ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_read_only_default_is_editable ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_render_tile_badge_paints_top_border_corner_with_selection_color ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_render_tile_highlighted_and_selected_uses_selection_border ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_render_tile_highlighted_only_uses_cursor_border ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_render_tile_writes_slug_and_status_dot ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_render_tile_with_badge_emits_index_marker ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_render_tiles_empty_writes_placeholder ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_request_open_empty_returns_none ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_request_open_returns_selected_slug ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_render_tiles_renders_badge_for_selected_plan ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_set_read_only_updates_state ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_request_quit ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_render_tiles_renders_only_visible_window ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_status_dot_color_legend ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_toggle_selection_empty_tiles_is_noop ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_toggle_selection_preserves_order_across_tiles ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_toggle_selection_uses_plan_id ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_truncate_overflow ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_truncate_within_width ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_truncate_zero_width ... ok
[INFO] [stdout] test tui::views::plan_list::tests::test_update_scroll_keeps_cursor_in_view ... ok
[INFO] [stdout] test tui::views::plan_list::tests::tile_click_before_first_draw_is_safe ... ok
[INFO] [stdout] test tui::views::plan_list::tests::toggle_selection_on_archived_sentinel_is_noop ... ok
[INFO] [stdout] test tui::views::plan_list::tests::update_plan_in_place_no_match_is_noop ... ok
[INFO] [stdout] test tui::views::plan_list::tests::update_plan_in_place_preserves_selection_and_cursor ... ok
[INFO] [stdout] test tui::views::plan_list::tests::update_plan_in_place_replaces_matching_tile ... ok
[INFO] [stdout] test tui::views::rendered_prompt::tests::attempt_one_has_no_retry_context ... ok
[INFO] [stdout] test tui::views::rendered_prompt::tests::build_attempts_per_attempt_matches_build_step_prompt ... ok
[INFO] [stdout] test tui::views::rendered_prompt::tests::build_attempts_zero_logs_matches_build_step_prompt_attempt_one ... ok
[INFO] [stdout] test tui::views::rendered_prompt::tests::build_attempts_prefers_persisted_prompt_text ... ok
[INFO] [stdout] test tui::views::rendered_prompt::tests::changing_attempt_resets_scroll ... ok
[INFO] [stdout] test tui::views::rendered_prompt::tests::esc_h_left_q_ctrlc_pop ... ok
[INFO] [stdout] test tui::views::rendered_prompt::tests::files_from_diff_dedupes_and_handles_none ... ok
[INFO] [stdout] test tui::views::rendered_prompt::tests::help_overlay_swallows_keys ... ok
[INFO] [stdout] test tui::views::rendered_prompt::tests::jk_scrolls_regardless_of_attempt_count ... ok
[INFO] [stdout] test tui::views::rendered_prompt::tests::later_attempt_omits_diff_and_files_keeps_reason_and_output ... ok
[INFO] [stdout] test tui::views::rendered_prompt::tests::legacy_rolled_back_attempt_restores_diff_and_files_in_fallback ... ok
[INFO] [stdout] test tui::views::rendered_prompt::tests::mouse_wheel_scrolls_body_regardless_of_attempt_count ... ok
[INFO] [stdout] test tui::views::rendered_prompt::tests::navigation_cycles_attempts_chronologically ... ok
[INFO] [stdout] test tui::views::rendered_prompt::tests::relative_time_buckets ... ok
[INFO] [stdout] test tui::views::rendered_prompt::tests::retry_context_uses_chronological_previous_log_after_attempt_reset ... ok
[INFO] [stdout] test tui::views::rendered_prompt::tests::text_visual_line_count_accounts_for_wrap ... ok
[INFO] [stdout] test tui::views::step_detail::tests::appended_at_leftmost_is_true_when_index_zero ... ok
[INFO] [stdout] test tui::views::step_detail::tests::appended_at_leftmost_is_true_with_empty_logs ... ok
[INFO] [stdout] test tui::views::step_detail::tests::appended_at_rightmost_is_true_at_last_index_and_when_empty ... ok
[INFO] [stdout] test tui::views::step_detail::tests::appended_default_index_is_most_recent_attempt ... ok
[INFO] [stdout] test tui::views::step_detail::tests::appended_next_increments_and_returns_true ... ok
[INFO] [stdout] test tui::views::step_detail::tests::appended_default_index_is_zero_when_no_logs ... ok
[INFO] [stdout] test tui::views::step_detail::tests::appended_next_returns_false_with_no_logs ... ok
[INFO] [stdout] test tui::views::plan_list::tests::draw_right_pane_blank_when_no_plans ... ok
[INFO] [stdout] test tui::views::step_detail::tests::appended_pane_title_changes_with_pagination ... ok
[INFO] [stdout] test tui::views::step_detail::tests::appended_pane_title_falls_back_when_no_logs ... ok
[INFO] [stdout] test tui::views::step_detail::tests::appended_pane_title_includes_attempt_count ... ok
[INFO] [stdout] test tui::views::step_detail::tests::appended_prev_decrements_and_returns_true ... ok
[INFO] [stdout] test tui::views::step_detail::tests::appended_prev_returns_false_with_no_logs ... ok
[INFO] [stdout] test tui::views::plan_list::tests::draw_right_pane_renders_highlighted_plans_steps ... ok
[INFO] [stdout] test tui::views::step_detail::tests::appended_pane_renders_dynamic_title_when_attempts_exist ... ok
[INFO] [stdout] test tui::views::step_detail::tests::appended_pane_renders_previous_diff_and_test_output ... ok
[INFO] [stdout] test tui::views::step_detail::tests::appended_pane_renders_first_attempt_placeholder ... ok
[INFO] [stdout] test tui::views::plan_hooks::tests::end_to_end_attach_already_attached_returns_unique_violation ... ok
[INFO] [stdout] test tui::views::step_detail::tests::apply_picker_submit_agent_writes_through_update_step_fields_ext ... ok
[INFO] [stdout] test tui::views::step_detail::tests::apply_picker_submit_change_policy_rejects_unknown_string ... ok
[INFO] [stdout] test tui::views::step_detail::tests::apply_picker_submit_change_policy_writes_optional ... ok
[INFO] [stdout] test tui::views::step_detail::tests::auto_zen_does_not_trigger_above_threshold ... ok
[INFO] [stdout] test tui::views::step_detail::tests::auto_zen_does_not_trigger_at_threshold ... ok
[INFO] [stdout] test tui::views::step_detail::tests::auto_zen_overrides_user_zen_off ... ok
[INFO] [stdout] test tui::views::step_detail::tests::auto_zen_releases_when_terminal_grows_back ... ok
[INFO] [stdout] test tui::views::step_detail::tests::auto_zen_toast_only_shows_once_per_view_instance ... ok
[INFO] [stdout] test tui::views::step_detail::tests::auto_zen_triggers_below_threshold ... ok
[INFO] [stdout] test tui::views::step_detail::tests::bottom_focus_defaults_to_harness ... ok
[INFO] [stdout] test tui::views::step_detail::tests::bottom_row_does_not_scroll ... ok
[INFO] [stdout] test tui::views::step_detail::tests::apply_picker_submit_harness_writes_through_update_step_fields_ext ... ok
[INFO] [stdout] test tui::views::step_detail::tests::apply_picker_submit_harness_inherit_clears_override ... ok
[INFO] [stdout] test tui::views::step_detail::tests::breadcrumb_step_segment_includes_number_and_title ... ok
[INFO] [stdout] test tui::views::step_detail::tests::breadcrumb_step_segment_when_no_steps ... ok
[INFO] [stdout] test tui::views::step_detail::tests::close_answer_modal_clears_state ... ok
[INFO] [stdout] test tui::views::step_detail::tests::close_picker_clears_state ... ok
[INFO] [stdout] test tui::views::step_detail::tests::close_resume_modal_clears_state ... ok
[INFO] [stdout] test tui::views::step_detail::tests::current_step_clamps_into_range ... ok
[INFO] [stdout] test tui::views::step_detail::tests::current_step_none_when_empty ... ok
[INFO] [stdout] test tui::views::step_detail::tests::current_step_returns_selected ... ok
[INFO] [stdout] test tui::views::step_detail::tests::bottom_row_renders_all_four_cells ... ok
[INFO] [stdout] test tui::views::step_detail::tests::apply_picker_submit_model_and_agent_inherit_clear_overrides ... ok
[INFO] [stdout] test tui::views::step_detail::tests::draw_above_threshold_does_not_force_zen ... ok
[INFO] [stdout] test tui::views::step_detail::tests::draw_below_threshold_pushes_auto_zen_toast ... ok
[INFO] [stdout] test tui::views::step_detail::tests::apply_picker_submit_model_writes_through_update_step_fields_ext ... ok
[INFO] [stdout] test tui::views::step_detail::tests::draw_does_not_panic_on_tiny_terminal ... ok
[INFO] [stdout] test tui::views::step_detail::tests::apply_picker_submit_no_op_on_empty_plan ... ok
[INFO] [stdout] test tui::views::step_detail::tests::bottom_row_renders_em_dash_for_empty_agent_and_model ... ok
[INFO] [stdout] test tui::views::step_detail::tests::draw_renders_breadcrumb_with_step_segment ... ok
[INFO] [stdout] test tui::views::step_detail::tests::edit_plan_prompt_pane_no_changes_when_unchanged ... ok
[INFO] [stdout] test tui::views::step_detail::tests::edit_plan_prompt_pane_empty_buffer_clears_to_empty_string ... ok
[INFO] [stdout] test tui::views::step_detail::tests::edit_project_pane_can_clear_the_prompt ... ok
[INFO] [stdout] test tui::views::step_detail::tests::edit_plan_prompt_pane_persists_changed_description ... ok
[INFO] [stdout] test tui::views::step_detail::tests::edit_plan_prompt_pane_seeds_editor_with_plan_description ... ok
[INFO] [stdout] test tui::views::step_detail::tests::edit_project_pane_clearing_file_backed_prompt_deletes_file ... ok
[INFO] [stdout] test tui::views::plan_hooks::tests::end_to_end_add_persists_through_storage_each_lifecycle ... ok
[INFO] [stdout] test tui::views::plan_hooks::tests::end_to_end_remove_persists_through_storage_each_lifecycle ... ok
[INFO] [stdout] test tui::views::step_detail::tests::edit_project_pane_routes_to_db_when_no_file ... ok
[INFO] [stdout] test tui::views::step_detail::tests::edit_project_pane_persists_changed_prompt ... ok
[INFO] [stdout] test tui::views::step_detail::tests::edit_project_pane_no_changes_skips_writes ... ok
[INFO] [stdout] test tui::views::step_detail::tests::edit_project_pane_no_editor_short_circuits ... ok
[INFO] [stdout] test tui::views::step_detail::tests::edit_project_pane_routes_to_file_when_present ... ok
[INFO] [stdout] test tui::views::step_detail::tests::edit_step_prompt_no_changes_when_buffer_round_trips_unchanged ... ok
[INFO] [stdout] test tui::views::step_detail::tests::edit_step_prompt_no_editor_short_circuits ... ok
[INFO] [stdout] test tui::views::step_detail::tests::edit_step_prompt_persists_changed_step ... ok
[INFO] [stdout] test tui::views::step_detail::tests::edit_universal_pane_can_clear_the_prompt ... ok
[INFO] [stdout] test tui::views::step_detail::tests::edit_universal_pane_persists_on_change ... ok
[INFO] [stdout] test tui::views::step_detail::tests::edit_universal_pane_returns_no_changes_when_buffer_unchanged ... ok
[INFO] [stdout] test tui::views::step_detail::tests::edit_universal_pane_returns_no_editor_when_closure_returns_none ... ok
[INFO] [stdout] test tui::views::step_detail::tests::edit_universal_pane_round_trips_through_mock_editor_script ... ok
[INFO] [stdout] test tui::views::step_detail::tests::edit_universal_pane_seeds_editor_with_current_prompt ... ok
[INFO] [stdout] test tui::views::step_detail::tests::effective_agent_falls_back_from_step_to_plan ... ok
[INFO] [stdout] test tui::views::step_detail::tests::effective_change_policy_returns_step_value ... ok
[INFO] [stdout] test tui::views::step_detail::tests::effective_harness_falls_back_to_plan_then_config ... ok
[INFO] [stdout] test tui::views::step_detail::tests::effective_harness_uses_default_when_neither_step_nor_plan_set ... ok
[INFO] [stdout] test tui::views::step_detail::tests::effective_model_prefers_step_then_harness_default ... ok
[INFO] [stdout] test tui::views::step_detail::tests::edit_step_prompt_returns_parse_error_on_empty_title ... ok
[INFO] [stdout] test tui::views::step_detail::tests::edit_tests_pane_no_changes_when_unchanged ... ok
[INFO] [stdout] test tui::views::step_detail::tests::edit_tests_pane_no_editor_short_circuits ... ok
[INFO] [stdout] test tui::views::step_detail::tests::focus_down_from_bottom_row_wraps_to_global ... ok
[INFO] [stdout] test tui::views::step_detail::tests::focus_down_from_step_prompt_advances_to_open_questions ... ok
[INFO] [stdout] test tui::views::step_detail::tests::focus_down_walks_full_stack_and_wraps ... ok
[INFO] [stdout] test tui::views::step_detail::tests::focus_up_from_global_wraps_to_bottom_row ... ok
[INFO] [stdout] test tui::views::step_detail::tests::focus_up_walks_stack_in_reverse_and_wraps ... ok
[INFO] [stdout] test tui::views::step_detail::tests::focused_pane_scroll_clamps_to_last_rendered_metrics ... ok
[INFO] [stdout] test tui::views::step_detail::tests::format_prompt_pane_empty_for_none_or_blank ... ok
[INFO] [stdout] test tui::views::step_detail::tests::format_prompt_pane_normalizes_trailing_newline ... ok
[INFO] [stdout] test tui::views::step_detail::tests::handle_left_on_bottom_row_walks_cells_and_pops_at_leftmost ... ok
[INFO] [stdout] test tui::views::step_detail::tests::handle_left_on_non_bottom_pane_pops_without_touching_bottom_focus ... ok
[INFO] [stdout] test tui::views::step_detail::tests::handle_left_paginates_when_appended_focused_and_not_leftmost ... ok
[INFO] [stdout] test tui::views::step_detail::tests::handle_left_pops_for_non_appended_pane_regardless_of_logs ... ok
[INFO] [stdout] test tui::views::step_detail::tests::handle_left_pops_when_appended_at_leftmost ... ok
[INFO] [stdout] test tui::views::step_detail::tests::handle_left_pops_when_appended_focused_with_no_logs ... ok
[INFO] [stdout] test tui::views::step_detail::tests::handle_left_pops_when_appended_focused_with_single_attempt ... ok
[INFO] [stdout] test tui::views::step_detail::tests::handle_mouse_no_op_before_first_draw ... ok
[INFO] [stdout] test tui::views::step_detail::tests::handle_right_no_op_at_rightmost ... ok
[INFO] [stdout] test tui::views::step_detail::tests::handle_right_no_op_for_non_appended_pane ... ok
[INFO] [stdout] test tui::views::step_detail::tests::handle_right_no_op_with_no_logs ... ok
[INFO] [stdout] test tui::views::step_detail::tests::handle_right_on_bottom_row_walks_cells ... ok
[INFO] [stdout] test tui::views::step_detail::tests::handle_right_on_non_bottom_pane_does_not_move_bottom_focus ... ok
[INFO] [stdout] test tui::views::step_detail::tests::handle_right_paginates_when_appended_focused_and_not_rightmost ... ok
[INFO] [stdout] test tui::views::step_detail::tests::initial_focus_is_step_prompt ... ok
[INFO] [stdout] test tui::views::step_detail::tests::initial_focus_is_step_prompt_even_with_no_steps ... ok
[INFO] [stdout] test tui::views::step_detail::tests::edit_step_prompt_returns_parse_error_on_missing_header ... ok
[INFO] [stdout] test tui::views::step_detail::tests::edit_tests_pane_can_clear_all_tests ... ok
[INFO] [stdout] test tui::views::step_detail::tests::note_answer_persisted_closes_answer_modal ... ok
[INFO] [stdout] test tui::views::step_detail::tests::note_answer_persisted_does_not_open_modal_when_questions_remain ... ok
[INFO] [stdout] test tui::views::step_detail::tests::note_answer_persisted_idempotent_for_resume_modal ... ok
[INFO] [stdout] test tui::views::step_detail::tests::note_answer_persisted_opens_resume_modal_when_plan_count_zero ... ok
[INFO] [stdout] test tui::views::step_detail::tests::observe_terminal_width_idempotent_across_redraws ... ok
[INFO] [stdout] test tui::views::step_detail::tests::observe_terminal_width_pushes_toast ... ok
[INFO] [stdout] test tui::views::step_detail::tests::open_answer_modal_blocked_when_read_only ... ok
[INFO] [stdout] test tui::views::step_detail::tests::open_answer_modal_idempotent_while_modal_open ... ok
[INFO] [stdout] test tui::views::step_detail::tests::open_answer_modal_only_when_pane_focused_and_questions_present ... ok
[INFO] [stdout] test tui::views::step_detail::tests::open_picker_for_agent_cell_uses_provided_list ... ok
[INFO] [stdout] test tui::views::step_detail::tests::open_picker_for_change_policy_lists_two_options ... ok
[INFO] [stdout] test tui::views::step_detail::tests::open_picker_for_harness_cell_uses_config_keys ... ok
[INFO] [stdout] test tui::views::step_detail::tests::open_picker_for_model_cell_includes_custom ... ok
[INFO] [stdout] test tui::views::step_detail::tests::open_picker_no_op_when_already_open ... ok
[INFO] [stdout] test tui::views::step_detail::tests::open_picker_no_op_when_not_on_bottom_row ... ok
[INFO] [stdout] test tui::views::step_detail::tests::pane_order_matches_four_layer_layout ... ok
[INFO] [stdout] test tui::views::step_detail::tests::parse_prompt_pane_round_trips_multiline_content ... ok
[INFO] [stdout] test tui::views::step_detail::tests::parse_prompt_pane_treats_whitespace_only_as_none ... ok
[INFO] [stdout] test tui::views::step_detail::tests::parse_step_pane_accepts_asterisk_bullets ... ok
[INFO] [stdout] test tui::views::step_detail::tests::parse_step_pane_rejects_empty_title ... ok
[INFO] [stdout] test tui::views::step_detail::tests::parse_step_pane_rejects_missing_criteria_header ... ok
[INFO] [stdout] test tui::views::step_detail::tests::parse_step_pane_rejects_missing_description_header ... ok
[INFO] [stdout] test tui::views::step_detail::tests::parse_step_pane_rejects_missing_title_header ... ok
[INFO] [stdout] test tui::views::step_detail::tests::parse_step_pane_rejects_multi_line_title ... ok
[INFO] [stdout] test tui::views::step_detail::tests::parse_step_pane_rejects_non_bullet_in_criteria ... ok
[INFO] [stdout] test tui::views::step_detail::tests::parse_step_pane_round_trips_full_step ... ok
[INFO] [stdout] test tui::views::step_detail::tests::parse_step_pane_round_trips_with_empty_description ... ok
[INFO] [stdout] test tui::views::step_detail::tests::parse_step_pane_round_trips_with_no_criteria ... ok
[INFO] [stdout] test tui::views::step_detail::tests::parse_step_pane_trims_trailing_blank_lines_in_description ... ok
[INFO] [stdout] test tui::views::step_detail::tests::parse_tests_pane_ignores_blank_and_comment_lines ... ok
[INFO] [stdout] test tui::views::step_detail::tests::parse_tests_pane_round_trips_empty_list ... ok
[INFO] [stdout] test tui::views::step_detail::tests::parse_tests_pane_round_trips_simple_list ... ok
[INFO] [stdout] test tui::views::step_detail::tests::parse_tests_pane_treats_comment_only_as_clear_all ... ok
[INFO] [stdout] test tui::views::step_detail::tests::parse_tests_pane_trims_each_line ... ok
[INFO] [stdout] test tui::views::step_detail::tests::picker_handle_key_enter_on_custom_flips_into_input_mode ... ok
[INFO] [stdout] test tui::views::step_detail::tests::picker_handle_key_enter_on_value_returns_submit ... ok
[INFO] [stdout] test tui::views::step_detail::tests::picker_handle_key_esc_returns_cancelled ... ok
[INFO] [stdout] test tui::views::step_detail::tests::picker_handle_key_returns_none_when_no_picker_open ... ok
[INFO] [stdout] test tui::views::step_detail::tests::edit_tests_pane_persists_changed_list ... ok
[INFO] [stdout] test tui::views::step_detail::tests::edit_tests_pane_round_trips_through_mock_editor_script ... ok
[INFO] [stdout] test tui::views::step_detail::tests::request_pop_sets_flag ... ok
[INFO] [stdout] test tui::views::step_detail::tests::select_question_next_wraps_around ... ok
[INFO] [stdout] test tui::views::step_detail::tests::select_question_prev_wraps_around ... ok
[INFO] [stdout] test tui::views::step_detail::tests::select_question_with_zero_or_one_is_noop ... ok
[INFO] [stdout] test tui::views::step_detail::tests::set_open_questions_for_step_resets_cursor_when_empty ... ok
[INFO] [stdout] test tui::views::step_detail::tests::sidebar_click_on_blank_row_does_not_select_invisible_step ... ok
[INFO] [stdout] test tui::views::step_detail::tests::set_open_questions_for_step_clamps_cursor ... ok
[INFO] [stdout] test tui::views::step_detail::tests::sidebar_drag_clamps_to_4_and_80 ... ok
[INFO] [stdout] test tui::views::step_detail::tests::sidebar_drag_down_drag_up_sets_override ... ok
[INFO] [stdout] test tui::views::step_detail::tests::sidebar_drag_press_off_divider_does_not_arm ... ok
[INFO] [stdout] test tui::views::step_detail::tests::sidebar_drag_starts_clears_user_zen ... ok
[INFO] [stdout] test tui::views::step_detail::tests::sidebar_drag_within_one_column_arms ... ok
[INFO] [stdout] test tui::views::step_detail::tests::sidebar_w_override_defaults_to_none ... ok
[INFO] [stdout] test tui::views::step_detail::tests::sidebar_w_override_set_and_clear ... ok
[INFO] [stdout] test tui::views::step_detail::tests::sidebar_window_start_pulls_back_near_list_end ... ok
[INFO] [stdout] test tui::views::step_detail::tests::step_detail_help_default_hidden ... ok
[INFO] [stdout] test tui::views::step_detail::tests::step_detail_help_intercepts_question_mark_and_esc ... ok
[INFO] [stdout] test tui::views::step_detail::tests::step_detail_palette_close_drops_state ... ok
[INFO] [stdout] test tui::views::step_detail::tests::step_detail_palette_default_inactive ... ok
[INFO] [stdout] test tui::views::step_detail::tests::step_detail_palette_enter_yields_submit_outcome_and_parses ... ok
[INFO] [stdout] test tui::views::step_detail::tests::step_detail_palette_esc_yields_cancel_outcome ... ok
[INFO] [stdout] test tui::views::step_detail::tests::step_detail_palette_open_records_prefix ... ok
[INFO] [stdout] test tui::views::step_detail::tests::end_to_end_open_esc_no_db_write ... ok
[INFO] [stdout] test tui::views::step_detail::tests::project_pane_renders_project_settings ... ok
[INFO] [stdout] test tui::views::step_detail::tests::end_to_end_model_custom_input_submits_typed_value ... ok
[INFO] [stdout] test tui::views::step_detail::tests::sidebar_click_selects_visible_step_row ... ok
[INFO] [stdout] test tui::views::step_detail::tests::test_step_detail_read_only_default_is_editable ... ok
[INFO] [stdout] test tui::views::step_detail::tests::test_step_detail_release_unlocks_can_edit ... ok
[INFO] [stdout] test tui::views::step_detail::tests::test_step_detail_set_read_only_blocks_can_edit ... ok
[INFO] [stdout] test tui::views::step_detail::tests::end_to_end_open_select_apply_change_policy ... ok
[INFO] [stdout] test tui::views::step_detail::tests::toggle_zen_clears_override_even_when_auto_zen_forces ... ok
[INFO] [stdout] test tui::views::step_detail::tests::toggle_zen_clears_sidebar_override ... ok
[INFO] [stdout] test tui::views::step_detail::tests::toggle_zen_flips_user_zen_state ... ok
[INFO] [stdout] test tui::views::step_detail::tests::toggle_zen_is_disabled_while_auto_zen_forces ... ok
[INFO] [stdout] test tui::views::step_detail::tests::toggle_zen_resumes_after_terminal_grows_back ... ok
[INFO] [stdout] test tui::views::step_detail::tests::mouse_click_focuses_pane_under_pointer ... ok
[INFO] [stdout] test tui::views::step_detail::tests::universal_pane_renders_config_prompt ... ok
[INFO] [stdout] test tui::views::step_detail::tests::visual_line_count_counts_display_columns ... ok
[INFO] [stdout] test tui::views::step_detail::tests::visual_line_count_is_word_wrap_aware ... ok
[INFO] [stdout] test tui::views::step_detail::tests::zen_mode_defaults_to_false ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::arrows_navigate_selection ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::backspace_pops_custom_buffer ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::bottom_cell_order_is_left_to_right ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::ctrl_c_in_custom_input_cancels ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::ctrl_c_in_list_mode_cancels ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::ctrl_modified_chars_ignored_in_custom_input ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::enter_custom_input_flips_mode_when_on_custom_row ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::enter_custom_input_is_noop_when_already_in_input ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::enter_in_custom_input_with_empty_buffer_is_pending ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::enter_in_custom_input_with_only_whitespace_is_pending ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::enter_in_custom_input_with_text_submits_trimmed ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::enter_on_custom_row_returns_pending ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::enter_on_inherit_row_submits_none ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::enter_on_value_row_submits ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::esc_in_custom_input_returns_to_list_mode ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::esc_in_list_mode_cancels ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::for_agent_preselects_current ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::for_agent_with_empty_list_still_offers_inherit ... ok
[INFO] [stdout] test tui::views::step_detail::tests::mouse_wheel_scrolls_pane_under_pointer_and_focuses_it ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::for_change_policy_preselects_current_optional ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::for_harness_defaults_to_zero_when_current_unknown ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::for_change_policy_preselects_current_required ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::for_harness_defaults_to_zero_when_current_unset ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::for_harness_preselects_current ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::for_model_appends_step_override_distinct_from_default ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::for_model_does_not_duplicate_when_override_matches_default ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::for_model_includes_custom_entry ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::for_model_with_no_default_has_inherit_and_custom ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::home_g_jumps_to_top_and_end_to_bottom ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::j_and_k_navigate_selection ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::move_left_returns_none_at_leftmost ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::move_left_walks_to_previous_cell ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::move_right_returns_none_at_rightmost ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::move_right_walks_to_next_cell ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::q_in_list_mode_cancels ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::render_does_not_panic_on_tiny_terminal ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::render_change_policy_picker_lists_both_options ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::render_shows_custom_label_for_model_picker ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::render_shows_inherit_for_empty_agent_list ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::render_shows_input_mode_after_custom_chosen ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::render_shows_title_and_items ... ok
[INFO] [stdout] test tui::views::step_hooks::tests::a_opens_lifecycle_picker_when_library_has_hooks ... ok
[INFO] [stdout] test tui::views::step_detail::tests::step_prompt_pane_renders_title_description_and_criteria ... ok
[INFO] [stdout] test tui::views::step_detail_picker::tests::typing_appends_to_custom_buffer ... ok
[INFO] [stdout] test tui::views::step_hooks::tests::candidates_for_filters_already_attached ... ok
[INFO] [stdout] test tui::views::step_hooks::tests::ctrl_c_pops_in_any_mode ... ok
[INFO] [stdout] test tui::views::step_hooks::tests::d_with_empty_attachments_is_pending ... ok
[INFO] [stdout] test tui::views::step_hooks::tests::a_with_empty_library_toasts_and_stays_in_list ... ok
[INFO] [stdout] test tui::views::step_hooks::tests::d_emits_remove_request_for_cursor_row_each_lifecycle ... ok
[INFO] [stdout] test tui::views::step_detail::tests::tests_pane_renders_deterministic_tests_as_bullets ... ok
[INFO] [stdout] test tui::views::step_detail::tests::tests_pane_shows_none_when_no_tests ... ok
[INFO] [stdout] test tui::views::step_hooks::tests::esc_pops_in_list_mode ... ok
[INFO] [stdout] test tui::views::step_hooks::tests::g_jumps_to_top_capital_g_to_bottom ... ok
[INFO] [stdout] test tui::views::step_hooks::tests::hook_enter_emits_add_request_for_each_lifecycle ... ok
[INFO] [stdout] test tui::views::step_detail::tests::universal_pane_shows_none_when_unset ... ok
[INFO] [stdout] test tui::views::step_hooks::tests::hook_picker_navigates_clamped ... ok
[INFO] [stdout] test tui::views::step_hooks::tests::hook_picker_esc_falls_back_to_lifecycle_picker ... ok
[INFO] [stdout] test tui::views::step_hooks::tests::j_moves_list_cursor_down_clamped ... ok
[INFO] [stdout] test tui::views::step_hooks::tests::k_moves_list_cursor_up_clamped ... ok
[INFO] [stdout] test tui::views::step_hooks::tests::lifecycle_enter_with_candidates_opens_hook_picker ... ok
[INFO] [stdout] test tui::views::step_hooks::tests::lifecycle_enter_with_no_remaining_candidates_toasts ... ok
[INFO] [stdout] test tui::views::step_hooks::tests::lifecycle_picker_esc_falls_back_to_list_mode ... ok
[INFO] [stdout] test tui::views::step_hooks::tests::lifecycle_picker_navigates_clamped ... ok
[INFO] [stdout] test tui::views::step_hooks::tests::new_starts_in_list_mode_with_zero_cursor ... ok
[INFO] [stdout] test tui::views::step_hooks::tests::q_pops_in_list_mode ... ok
[INFO] [stdout] test tui::views::step_hooks::tests::new_sorts_attachments_by_lifecycle_then_name ... ok
[INFO] [stdout] test tui::views::step_hooks::tests::refresh_clamps_cursors_to_new_lengths ... ok
[INFO] [stdout] test tui::views::step_hooks::tests::refresh_with_empty_lists_zeroes_cursors ... ok
[INFO] [stdout] test tui::views::step_hooks::tests::render_empty_list_shows_placeholder ... ok
[INFO] [stdout] test tui::views::step_hooks::tests::render_hook_picker_titles_with_chosen_lifecycle ... ok
[INFO] [stdout] test tui::views::step_detail::tests::step_prompt_pane_surfaces_review_badge_and_corrects_marker ... ok
[INFO] [stdout] test tui::views::step_hooks::tests::unknown_key_in_list_is_pending ... ok
[INFO] [stdout] test tui::views::step_detail::tests::step_prompt_pane_shows_blocked_overlay_when_step_has_open_question ... ok
[INFO] [stdout] test tui::views::step_hooks::tests::render_lifecycle_picker_lists_all_four_lifecycles ... ok
[INFO] [stdout] test tui::views::step_tags::tests::ctrl_c_pops_in_input_mode ... ok
[INFO] [stdout] test tui::views::step_tags::tests::ctrl_c_pops_in_list_mode ... ok
[INFO] [stdout] test tui::views::step_tags::tests::d_on_singleton_collapses_to_zero_cursor ... ok
[INFO] [stdout] test tui::views::step_tags::tests::d_removes_highlighted_tag ... ok
[INFO] [stdout] test tui::views::step_tags::tests::d_at_last_position_clamps_cursor ... ok
[INFO] [stdout] test tui::views::step_tags::tests::d_on_empty_list_is_pending_no_op ... ok
[INFO] [stdout] test tui::views::step_hooks::tests::render_list_shows_lifecycle_label_for_each_variant ... ok
[INFO] [stdout] test tui::views::step_hooks::tests::end_to_end_remove_does_not_touch_plan_wide_hook ... ok
[INFO] [stdout] test tui::views::step_tags::tests::enter_in_list_emits_save_and_pop_with_current_tags ... ok
[INFO] [stdout] test tui::views::step_tags::tests::enter_with_empty_list_emits_save_and_pop_with_empty_vec ... ok
[INFO] [stdout] test tui::views::step_tags::tests::esc_in_list_emits_discard_and_pop ... ok
[INFO] [stdout] test tui::views::step_tags::tests::g_jumps_to_top_capital_g_to_bottom ... ok
[INFO] [stdout] test tui::views::step_tags::tests::i_opens_input_modal_with_empty_buffer ... ok
[INFO] [stdout] test tui::views::step_tags::tests::input_backspace_pops_last_char ... ok
[INFO] [stdout] test tui::views::step_tags::tests::input_enter_appends_tag_returns_to_list ... ok
[INFO] [stdout] test tui::views::step_tags::tests::input_enter_with_duplicate_toasts_and_stays_in_input ... ok
[INFO] [stdout] test tui::views::step_tags::tests::input_enter_with_empty_buffer_toasts_and_stays_in_input ... ok
[INFO] [stdout] test tui::views::step_tags::tests::input_enter_with_whitespace_only_buffer_is_rejected ... ok
[INFO] [stdout] test tui::views::step_tags::tests::input_esc_cancels_returns_to_list_without_adding ... ok
[INFO] [stdout] test tui::views::step_tags::tests::input_ignores_ctrl_modified_chars ... ok
[INFO] [stdout] test tui::views::step_tags::tests::input_trims_buffer_before_committing ... ok
[INFO] [stdout] test tui::views::step_tags::tests::input_typing_appends_to_buffer ... ok
[INFO] [stdout] test tui::views::step_tags::tests::j_moves_list_cursor_down_clamped ... ok
[INFO] [stdout] test tui::views::step_tags::tests::k_moves_list_cursor_up_clamped ... ok
[INFO] [stdout] test tui::views::step_tags::tests::new_starts_in_list_mode_with_zero_cursor ... ok
[INFO] [stdout] test tui::views::step_tags::tests::q_in_list_discards_and_pops ... ok
[INFO] [stdout] test tui::views::step_tags::tests::render_empty_list_shows_placeholder ... ok
[INFO] [stdout] test tui::views::step_tags::tests::render_input_modal_shows_buffer_and_label ... ok
[INFO] [stdout] test tui::views::step_tags::tests::render_list_shows_each_tag_with_index ... ok
[INFO] [stdout] test tui::views::step_tags::tests::render_toast_overrides_hint_row ... ok
[INFO] [stdout] test tui::views::step_tags::tests::save_returns_tags_in_insertion_order ... ok
[INFO] [stdout] test tui::views::step_tags::tests::unknown_key_in_list_is_pending ... ok
[INFO] [stdout] test tui::widgets::outline_list::tests::blocked_overlay_uses_orange_via_theme_helper ... ok
[INFO] [stdout] test tui::widgets::outline_list::tests::renders_corrects_marker_and_review_badge ... ok
[INFO] [stdout] test tui::widgets::outline_list::tests::renders_join_deps_with_tree_art ... ok
[INFO] [stdout] test tui::widgets::outline_list::tests::renders_tree_art_connectors_for_branching_subtree ... ok
[INFO] [stdout] test tui::widgets::outline_list::tests::review_badge_pending_and_disabled_are_silent ... ok
[INFO] [stdout] test tui::widgets::palette_bar::tests::apply_completion_replaces_input_with_indexed_suggestion ... ok
[INFO] [stdout] test tui::widgets::palette_bar::tests::apply_completion_with_no_index_is_noop ... ok
[INFO] [stdout] test tui::widgets::palette_bar::tests::back_tab_cycles_in_reverse ... ok
[INFO] [stdout] test tui::widgets::palette_bar::tests::backspace_removes_one_char ... ok
[INFO] [stdout] test tui::widgets::palette_bar::tests::ctrl_c_returns_cancel ... ok
[INFO] [stdout] test tui::widgets::palette_bar::tests::ctrl_modified_chars_are_swallowed ... ok
[INFO] [stdout] test tui::widgets::palette_bar::tests::cursor_movement_clears_pending_completion ... ok
[INFO] [stdout] test tui::widgets::palette_bar::tests::enter_submits_current_input ... ok
[INFO] [stdout] test tui::widgets::palette_bar::tests::esc_returns_cancel ... ok
[INFO] [stdout] test tui::widgets::palette_bar::tests::left_right_arrows_move_cursor ... ok
[INFO] [stdout] test tui::widgets::palette_bar::tests::render_caps_visible_suggestions_at_three ... ok
[INFO] [stdout] test tui::widgets::palette_bar::tests::render_cursor_past_end_renders_a_block_after_input ... ok
[INFO] [stdout] test tui::widgets::palette_bar::tests::render_does_not_panic_on_tiny_area ... ok
[INFO] [stdout] test tui::widgets::palette_bar::tests::render_draws_prefix_then_input_on_bottom_row ... ok
[INFO] [stdout] test tui::widgets::palette_bar::tests::render_highlights_the_active_suggestion_with_cursor_bg ... ok
[INFO] [stdout] test tui::widgets::palette_bar::tests::render_omits_suggestions_when_empty ... ok
[INFO] [stdout] test tui::widgets::palette_bar::tests::render_shows_suggestion_rows_above_the_bar ... ok
[INFO] [stdout] test tui::widgets::palette_bar::tests::render_uses_slash_prefix_when_state_says_so ... ok
[INFO] [stdout] test tui::widgets::palette_bar::tests::render_visible_cursor_uses_reversed_modifier ... ok
[INFO] [stdout] test tui::widgets::palette_bar::tests::render_windows_to_keep_active_suggestion_visible ... ok
[INFO] [stdout] test tui::widgets::palette_bar::tests::render_zero_area_is_noop ... ok
[INFO] [stdout] test tui::widgets::palette_bar::tests::reset_clears_buffer_and_suggestions ... ok
[INFO] [stdout] test tui::widgets::palette_bar::tests::tab_cycles_suggestions_and_applies_them ... ok
[INFO] [stdout] test tui::widgets::palette_bar::tests::tab_with_no_suggestions_is_a_noop ... ok
[INFO] [stdout] test tui::widgets::palette_bar::tests::typing_inserts_chars_and_clears_cycle ... ok
[INFO] [stdout] test tui::widgets::palette_bar::tests::word_erase_at_column_zero_is_noop ... ok
[INFO] [stdout] test tui::widgets::palette_bar::tests::word_erase_in_middle_of_buffer ... ok
[INFO] [stdout] test tui::widgets::palette_bar::tests::word_erase_removes_trailing_word_and_whitespace ... ok
[INFO] [stdout] test tui::widgets::step_list::tests::cursor_row_uses_theme_cursor_background ... ok
[INFO] [stdout] test tui::widgets::step_list::tests::empty_steps_does_not_panic ... ok
[INFO] [stdout] test tui::widgets::step_list::tests::no_cursor_when_index_is_none ... ok
[INFO] [stdout] test tui::widgets::step_list::tests::renders_all_step_titles ... ok
[INFO] [stdout] test tui::widgets::step_list::tests::selection_badge_renders_for_selected_indices ... ok
[INFO] [stdout] test tui::widgets::step_list::tests::status_glyphs_match_step_status_mapping ... ok
[INFO] [stdout] test validate::tests::rejects_absolute_path ... ok
[INFO] [stdout] test validate::tests::rejects_backslash_path ... ok
[INFO] [stdout] test validate::tests::rejects_empty ... ok
[INFO] [stdout] test validate::tests::rejects_leading_dot ... ok
[INFO] [stdout] test validate::tests::rejects_nul_byte ... ok
[INFO] [stdout] test validate::tests::rejects_path_traversal ... ok
[INFO] [stdout] test validate::tests::valid_names ... ok
[INFO] [stdout] test tui::views::step_hooks::tests::end_to_end_attach_already_attached_returns_unique_violation ... ok
[INFO] [stdout] test tui::views::step_tags::tests::end_to_end_save_persists_removed_tag_through_storage ... ok
[INFO] [stdout] test tui::views::step_tags::tests::end_to_end_discard_does_not_touch_storage ... ok
[INFO] [stdout] test tui::views::step_tags::tests::end_to_end_save_with_empty_clears_all_tags ... ok
[INFO] [stdout] test tui::views::step_tags::tests::end_to_end_save_persists_added_tag_through_storage ... ok
[INFO] [stdout] test tui::views::step_hooks::tests::end_to_end_add_persists_through_storage_each_lifecycle ... ok
[INFO] [stdout] test tui::views::step_hooks::tests::end_to_end_remove_persists_through_storage_each_lifecycle ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- executor::tests::test_abort_kills_harness_process_group stdout ----
[INFO] [stdout]   -> pgroup attempt 1/1 [started 2026-06-12 16:43:06 UTC]
[INFO] [stdout] 
[INFO] [stdout] thread 'executor::tests::test_abort_kills_harness_process_group' (1024) panicked at src/executor.rs:5415:9:
[INFO] [stdout] grandchild sleep (pid 1101) survived the abort — process-group kill did not fan out
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x64bdc5d89a78 - std[929523f510218772]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x64bdc5d89a78 - std[929523f510218772]::backtrace_rs::backtrace::trace_unsynchronized::<std[929523f510218772]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x64bdc5d89a78 - std[929523f510218772]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x64bdc5d89a78 - <<std[929523f510218772]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[28b146924c2f19c6]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x64bdc5da2d1a - <core[28b146924c2f19c6]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x64bdc5da2d1a - core[28b146924c2f19c6]::fmt::write
[INFO] [stdout]    6:     0x64bdc5d90bf2 - std[929523f510218772]::io::default_write_fmt::<alloc[95e62e727ddf147d]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/io/mod.rs:622:11
[INFO] [stdout]    7:     0x64bdc5d90bf2 - <alloc[95e62e727ddf147d]::vec::Vec<u8> as std[929523f510218772]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/io/mod.rs:1977:13
[INFO] [stdout]    8:     0x64bdc5d63f16 - <std[929523f510218772]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x64bdc5d63f16 - std[929523f510218772]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x64bdc5d806c9 - std[929523f510218772]::panicking::default_hook
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x64bdc593684c - <alloc[95e62e727ddf147d]::boxed::Box<dyn for<'a, 'b> core[28b146924c2f19c6]::ops::function::Fn<(&'a std[929523f510218772]::panic::PanicHookInfo<'b>,), Output = ()> + core[28b146924c2f19c6]::marker::Sync + core[28b146924c2f19c6]::marker::Send> as core[28b146924c2f19c6]::ops::function::Fn<(&std[929523f510218772]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/alloc/src/boxed.rs:2291:9
[INFO] [stdout]   12:     0x64bdc593684c - test[6ec0502068880816]::test_main_inner::<test[6ec0502068880816]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x64bdc5d80942 - <alloc[95e62e727ddf147d]::boxed::Box<dyn for<'a, 'b> core[28b146924c2f19c6]::ops::function::Fn<(&'a std[929523f510218772]::panic::PanicHookInfo<'b>,), Output = ()> + core[28b146924c2f19c6]::marker::Sync + core[28b146924c2f19c6]::marker::Send> as core[28b146924c2f19c6]::ops::function::Fn<(&std[929523f510218772]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/alloc/src/boxed.rs:2291:9
[INFO] [stdout]   14:     0x64bdc5d80942 - std[929523f510218772]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x64bdc5d63fd2 - std[929523f510218772]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x64bdc5d58669 - std[929523f510218772]::sys::backtrace::__rust_end_short_backtrace::<std[929523f510218772]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x64bdc5d6523d - __rustc[acf6043c977865fb]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x64bdc5da34dc - core[28b146924c2f19c6]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x64bdc4ea1ecf - ralph[19f1293eae3f54b3]::executor::tests::test_abort_kills_harness_process_group::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/executor.rs:5415:9
[INFO] [stdout]   20:     0x64bdc54b7042 - <core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>> as core[28b146924c2f19c6]::future::future::Future>::poll
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/future/future.rs:133:9
[INFO] [stdout]   21:     0x64bdc54b717d - <core[28b146924c2f19c6]::pin::Pin<&mut core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>> as core[28b146924c2f19c6]::future::future::Future>::poll
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/future/future.rs:133:9
[INFO] [stdout]   22:     0x64bdc5897d9d - <tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[28b146924c2f19c6]::pin::Pin<&mut core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.2/src/runtime/scheduler/current_thread/mod.rs:778:70
[INFO] [stdout]   23:     0x64bdc589783b - tokio[752ee1c8eb6d9c19]::task::coop::with_budget::<core[28b146924c2f19c6]::task::poll::Poll<()>, <tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[28b146924c2f19c6]::pin::Pin<&mut core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.2/src/task/coop/mod.rs:167:5
[INFO] [stdout]   24:     0x64bdc589783b - tokio[752ee1c8eb6d9c19]::task::coop::budget::<core[28b146924c2f19c6]::task::poll::Poll<()>, <tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[28b146924c2f19c6]::pin::Pin<&mut core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.2/src/task/coop/mod.rs:133:5
[INFO] [stdout]   25:     0x64bdc589783b - <tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[28b146924c2f19c6]::pin::Pin<&mut core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.2/src/runtime/scheduler/current_thread/mod.rs:778:25
[INFO] [stdout]   26:     0x64bdc581a490 - <tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::Context>::enter::<core[28b146924c2f19c6]::task::poll::Poll<()>, <tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[28b146924c2f19c6]::pin::Pin<&mut core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.2/src/runtime/scheduler/current_thread/mod.rs:451:19
[INFO] [stdout]   27:     0x64bdc589471d - <tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[28b146924c2f19c6]::pin::Pin<&mut core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.2/src/runtime/scheduler/current_thread/mod.rs:777:44
[INFO] [stdout]   28:     0x64bdc5892204 - <tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::enter::<<tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[28b146924c2f19c6]::pin::Pin<&mut core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>>::{closure#0}, core[28b146924c2f19c6]::option::Option<()>>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.2/src/runtime/scheduler/current_thread/mod.rs:865:68
[INFO] [stdout]   29:     0x64bdc516e76b - <tokio[752ee1c8eb6d9c19]::runtime::context::scoped::Scoped<tokio[752ee1c8eb6d9c19]::runtime::scheduler::Context>>::set::<<tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[28b146924c2f19c6]::pin::Pin<&mut core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>>::{closure#0}, core[28b146924c2f19c6]::option::Option<()>>::{closure#0}, (alloc[95e62e727ddf147d]::boxed::Box<tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::Core>, core[28b146924c2f19c6]::option::Option<()>)>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.2/src/runtime/context/scoped.rs:40:9
[INFO] [stdout]   30:     0x64bdc5473f99 - tokio[752ee1c8eb6d9c19]::runtime::context::set_scheduler::<(alloc[95e62e727ddf147d]::boxed::Box<tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::Core>, core[28b146924c2f19c6]::option::Option<()>), <tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[28b146924c2f19c6]::pin::Pin<&mut core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>>::{closure#0}, core[28b146924c2f19c6]::option::Option<()>>::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.2/src/runtime/context.rs:181:38
[INFO] [stdout]   31:     0x64bdc5439c42 - <std[929523f510218772]::thread::local::LocalKey<tokio[752ee1c8eb6d9c19]::runtime::context::Context>>::try_with::<tokio[752ee1c8eb6d9c19]::runtime::context::set_scheduler<(alloc[95e62e727ddf147d]::boxed::Box<tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::Core>, core[28b146924c2f19c6]::option::Option<()>), <tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[28b146924c2f19c6]::pin::Pin<&mut core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>>::{closure#0}, core[28b146924c2f19c6]::option::Option<()>>::{closure#0}>::{closure#0}, (alloc[95e62e727ddf147d]::boxed::Box<tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::Core>, core[28b146924c2f19c6]::option::Option<()>)>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/thread/local.rs:462:12
[INFO] [stdout]   32:     0x64bdc5438cbe - <std[929523f510218772]::thread::local::LocalKey<tokio[752ee1c8eb6d9c19]::runtime::context::Context>>::with::<tokio[752ee1c8eb6d9c19]::runtime::context::set_scheduler<(alloc[95e62e727ddf147d]::boxed::Box<tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::Core>, core[28b146924c2f19c6]::option::Option<()>), <tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[28b146924c2f19c6]::pin::Pin<&mut core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>>::{closure#0}, core[28b146924c2f19c6]::option::Option<()>>::{closure#0}>::{closure#0}, (alloc[95e62e727ddf147d]::boxed::Box<tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::Core>, core[28b146924c2f19c6]::option::Option<()>)>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/thread/local.rs:426:20
[INFO] [stdout]   33:     0x64bdc546429d - tokio[752ee1c8eb6d9c19]::runtime::context::set_scheduler::<(alloc[95e62e727ddf147d]::boxed::Box<tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::Core>, core[28b146924c2f19c6]::option::Option<()>), <tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[28b146924c2f19c6]::pin::Pin<&mut core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>>::{closure#0}, core[28b146924c2f19c6]::option::Option<()>>::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.2/src/runtime/context.rs:181:17
[INFO] [stdout]   34:     0x64bdc58271d0 - <tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::enter::<<tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[28b146924c2f19c6]::pin::Pin<&mut core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>>::{closure#0}, core[28b146924c2f19c6]::option::Option<()>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.2/src/runtime/scheduler/current_thread/mod.rs:865:27
[INFO] [stdout]   35:     0x64bdc5827f06 - <tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[28b146924c2f19c6]::pin::Pin<&mut core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.2/src/runtime/scheduler/current_thread/mod.rs:765:24
[INFO] [stdout]   36:     0x64bdc5890b60 - <tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CurrentThread>::block_on::<core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.2/src/runtime/scheduler/current_thread/mod.rs:205:33
[INFO] [stdout]   37:     0x64bdc570ee63 - tokio[752ee1c8eb6d9c19]::runtime::context::runtime::enter_runtime::<<tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CurrentThread>::block_on<core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>::{closure#0}, ()>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.2/src/runtime/context/runtime.rs:65:16
[INFO] [stdout]   38:     0x64bdc5818f21 - <tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CurrentThread>::block_on::<core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.2/src/runtime/scheduler/current_thread/mod.rs:193:9
[INFO] [stdout]   39:     0x64bdc4bae584 - <tokio[752ee1c8eb6d9c19]::runtime::runtime::Runtime>::block_on_inner::<core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.2/src/runtime/runtime.rs:371:52
[INFO] [stdout]   40:     0x64bdc4baeb4f - <tokio[752ee1c8eb6d9c19]::runtime::runtime::Runtime>::block_on::<core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.2/src/runtime/runtime.rs:345:18
[INFO] [stdout]   41:     0x64bdc4f51ffe - ralph[19f1293eae3f54b3]::executor::tests::test_abort_kills_harness_process_group
[INFO] [stdout]                                at /opt/rustwide/workdir/src/executor.rs:5419:10
[INFO] [stdout]   42:     0x64bdc4e98617 - ralph[19f1293eae3f54b3]::executor::tests::test_abort_kills_harness_process_group::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/executor.rs:5269:54
[INFO] [stdout]   43:     0x64bdc58c52a6 - <ralph[19f1293eae3f54b3]::executor::tests::test_abort_kills_harness_process_group::{closure#0} as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   44:     0x64bdc592992b - <fn() -> core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String> as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   45:     0x64bdc592992b - test[6ec0502068880816]::__rust_begin_short_backtrace::<core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>, fn() -> core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:724:18
[INFO] [stdout]   46:     0x64bdc59371a5 - test[6ec0502068880816]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:747:74
[INFO] [stdout]   47:     0x64bdc59371a5 - <core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<test[6ec0502068880816]::run_test_in_process::{closure#0}> as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   48:     0x64bdc59371a5 - std[929523f510218772]::panicking::catch_unwind::do_call::<core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<test[6ec0502068880816]::run_test_in_process::{closure#0}>, core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:581:40
[INFO] [stdout]   49:     0x64bdc59371a5 - std[929523f510218772]::panicking::catch_unwind::<core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>, core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<test[6ec0502068880816]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:544:19
[INFO] [stdout]   50:     0x64bdc59371a5 - std[929523f510218772]::panic::catch_unwind::<core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<test[6ec0502068880816]::run_test_in_process::{closure#0}>, core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panic.rs:359:14
[INFO] [stdout]   51:     0x64bdc59371a5 - test[6ec0502068880816]::run_test_in_process
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:747:27
[INFO] [stdout]   52:     0x64bdc59371a5 - test[6ec0502068880816]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:668:43
[INFO] [stdout]   53:     0x64bdc5931d04 - test[6ec0502068880816]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:698:41
[INFO] [stdout]   54:     0x64bdc5931d04 - std[929523f510218772]::sys::backtrace::__rust_begin_short_backtrace::<test[6ec0502068880816]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   55:     0x64bdc593a222 - std[929523f510218772]::thread::lifecycle::spawn_unchecked::<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   56:     0x64bdc593a222 - <core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   57:     0x64bdc593a222 - std[929523f510218772]::panicking::catch_unwind::do_call::<core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:581:40
[INFO] [stdout]   58:     0x64bdc593a222 - std[929523f510218772]::panicking::catch_unwind::<(), core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:544:19
[INFO] [stdout]   59:     0x64bdc593a222 - std[929523f510218772]::panic::catch_unwind::<core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panic.rs:359:14
[INFO] [stdout]   60:     0x64bdc593a222 - std[929523f510218772]::thread::lifecycle::spawn_unchecked::<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   61:     0x64bdc593a222 - <std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1} as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   62:     0x64bdc5d88bdf - <alloc[95e62e727ddf147d]::boxed::Box<dyn core[28b146924c2f19c6]::ops::function::FnOnce<(), Output = ()> + core[28b146924c2f19c6]::marker::Send> as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/alloc/src/boxed.rs:2277:9
[INFO] [stdout]   63:     0x64bdc5d88bdf - <std[929523f510218772]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   64:     0x7661bfe3caa4 - <unknown>
[INFO] [stdout]   65:     0x7661bfec9a64 - clone
[INFO] [stdout]   66:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- executor::tests::test_graceful_shutdown_kills_sigterm_resistant_descendant stdout ----
[INFO] [stdout]   -> trap attempt 1/1 [started 2026-06-12 16:43:07 UTC]
[INFO] [stdout] 
[INFO] [stdout] thread 'executor::tests::test_graceful_shutdown_kills_sigterm_resistant_descendant' (1344) panicked at src/executor.rs:7010:9:
[INFO] [stdout] SIGTERM-trapping grandchild (pid 1426) survived abort — belt-and-braces SIGKILL did not fan out
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x64bdc5d89a78 - std[929523f510218772]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x64bdc5d89a78 - std[929523f510218772]::backtrace_rs::backtrace::trace_unsynchronized::<std[929523f510218772]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x64bdc5d89a78 - std[929523f510218772]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x64bdc5d89a78 - <<std[929523f510218772]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[28b146924c2f19c6]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x64bdc5da2d1a - <core[28b146924c2f19c6]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x64bdc5da2d1a - core[28b146924c2f19c6]::fmt::write
[INFO] [stdout]    6:     0x64bdc5d90bf2 - std[929523f510218772]::io::default_write_fmt::<alloc[95e62e727ddf147d]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/io/mod.rs:622:11
[INFO] [stdout]    7:     0x64bdc5d90bf2 - <alloc[95e62e727ddf147d]::vec::Vec<u8> as std[929523f510218772]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/io/mod.rs:1977:13
[INFO] [stdout]    8:     0x64bdc5d63f16 - <std[929523f510218772]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x64bdc5d63f16 - std[929523f510218772]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x64bdc5d806c9 - std[929523f510218772]::panicking::default_hook
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x64bdc593684c - <alloc[95e62e727ddf147d]::boxed::Box<dyn for<'a, 'b> core[28b146924c2f19c6]::ops::function::Fn<(&'a std[929523f510218772]::panic::PanicHookInfo<'b>,), Output = ()> + core[28b146924c2f19c6]::marker::Sync + core[28b146924c2f19c6]::marker::Send> as core[28b146924c2f19c6]::ops::function::Fn<(&std[929523f510218772]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/alloc/src/boxed.rs:2291:9
[INFO] [stdout]   12:     0x64bdc593684c - test[6ec0502068880816]::test_main_inner::<test[6ec0502068880816]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x64bdc5d80942 - <alloc[95e62e727ddf147d]::boxed::Box<dyn for<'a, 'b> core[28b146924c2f19c6]::ops::function::Fn<(&'a std[929523f510218772]::panic::PanicHookInfo<'b>,), Output = ()> + core[28b146924c2f19c6]::marker::Sync + core[28b146924c2f19c6]::marker::Send> as core[28b146924c2f19c6]::ops::function::Fn<(&std[929523f510218772]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/alloc/src/boxed.rs:2291:9
[INFO] [stdout]   14:     0x64bdc5d80942 - std[929523f510218772]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x64bdc5d63fd2 - std[929523f510218772]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x64bdc5d58669 - std[929523f510218772]::sys::backtrace::__rust_end_short_backtrace::<std[929523f510218772]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x64bdc5d6523d - __rustc[acf6043c977865fb]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x64bdc5da34dc - core[28b146924c2f19c6]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x64bdc4ef592b - ralph[19f1293eae3f54b3]::executor::tests::test_graceful_shutdown_kills_sigterm_resistant_descendant::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/executor.rs:7010:9
[INFO] [stdout]   20:     0x64bdc54b7042 - <core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>> as core[28b146924c2f19c6]::future::future::Future>::poll
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/future/future.rs:133:9
[INFO] [stdout]   21:     0x64bdc54b717d - <core[28b146924c2f19c6]::pin::Pin<&mut core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>> as core[28b146924c2f19c6]::future::future::Future>::poll
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/future/future.rs:133:9
[INFO] [stdout]   22:     0x64bdc5897d9d - <tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[28b146924c2f19c6]::pin::Pin<&mut core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.2/src/runtime/scheduler/current_thread/mod.rs:778:70
[INFO] [stdout]   23:     0x64bdc589783b - tokio[752ee1c8eb6d9c19]::task::coop::with_budget::<core[28b146924c2f19c6]::task::poll::Poll<()>, <tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[28b146924c2f19c6]::pin::Pin<&mut core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.2/src/task/coop/mod.rs:167:5
[INFO] [stdout]   24:     0x64bdc589783b - tokio[752ee1c8eb6d9c19]::task::coop::budget::<core[28b146924c2f19c6]::task::poll::Poll<()>, <tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[28b146924c2f19c6]::pin::Pin<&mut core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.2/src/task/coop/mod.rs:133:5
[INFO] [stdout]   25:     0x64bdc589783b - <tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[28b146924c2f19c6]::pin::Pin<&mut core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.2/src/runtime/scheduler/current_thread/mod.rs:778:25
[INFO] [stdout]   26:     0x64bdc581a490 - <tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::Context>::enter::<core[28b146924c2f19c6]::task::poll::Poll<()>, <tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[28b146924c2f19c6]::pin::Pin<&mut core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>>::{closure#0}::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.2/src/runtime/scheduler/current_thread/mod.rs:451:19
[INFO] [stdout]   27:     0x64bdc589471d - <tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[28b146924c2f19c6]::pin::Pin<&mut core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.2/src/runtime/scheduler/current_thread/mod.rs:777:44
[INFO] [stdout]   28:     0x64bdc5892204 - <tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::enter::<<tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[28b146924c2f19c6]::pin::Pin<&mut core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>>::{closure#0}, core[28b146924c2f19c6]::option::Option<()>>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.2/src/runtime/scheduler/current_thread/mod.rs:865:68
[INFO] [stdout]   29:     0x64bdc516e76b - <tokio[752ee1c8eb6d9c19]::runtime::context::scoped::Scoped<tokio[752ee1c8eb6d9c19]::runtime::scheduler::Context>>::set::<<tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[28b146924c2f19c6]::pin::Pin<&mut core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>>::{closure#0}, core[28b146924c2f19c6]::option::Option<()>>::{closure#0}, (alloc[95e62e727ddf147d]::boxed::Box<tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::Core>, core[28b146924c2f19c6]::option::Option<()>)>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.2/src/runtime/context/scoped.rs:40:9
[INFO] [stdout]   30:     0x64bdc5473f99 - tokio[752ee1c8eb6d9c19]::runtime::context::set_scheduler::<(alloc[95e62e727ddf147d]::boxed::Box<tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::Core>, core[28b146924c2f19c6]::option::Option<()>), <tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[28b146924c2f19c6]::pin::Pin<&mut core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>>::{closure#0}, core[28b146924c2f19c6]::option::Option<()>>::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.2/src/runtime/context.rs:181:38
[INFO] [stdout]   31:     0x64bdc5439c42 - <std[929523f510218772]::thread::local::LocalKey<tokio[752ee1c8eb6d9c19]::runtime::context::Context>>::try_with::<tokio[752ee1c8eb6d9c19]::runtime::context::set_scheduler<(alloc[95e62e727ddf147d]::boxed::Box<tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::Core>, core[28b146924c2f19c6]::option::Option<()>), <tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[28b146924c2f19c6]::pin::Pin<&mut core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>>::{closure#0}, core[28b146924c2f19c6]::option::Option<()>>::{closure#0}>::{closure#0}, (alloc[95e62e727ddf147d]::boxed::Box<tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::Core>, core[28b146924c2f19c6]::option::Option<()>)>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/thread/local.rs:462:12
[INFO] [stdout]   32:     0x64bdc5438cbe - <std[929523f510218772]::thread::local::LocalKey<tokio[752ee1c8eb6d9c19]::runtime::context::Context>>::with::<tokio[752ee1c8eb6d9c19]::runtime::context::set_scheduler<(alloc[95e62e727ddf147d]::boxed::Box<tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::Core>, core[28b146924c2f19c6]::option::Option<()>), <tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[28b146924c2f19c6]::pin::Pin<&mut core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>>::{closure#0}, core[28b146924c2f19c6]::option::Option<()>>::{closure#0}>::{closure#0}, (alloc[95e62e727ddf147d]::boxed::Box<tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::Core>, core[28b146924c2f19c6]::option::Option<()>)>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/thread/local.rs:426:20
[INFO] [stdout]   33:     0x64bdc546429d - tokio[752ee1c8eb6d9c19]::runtime::context::set_scheduler::<(alloc[95e62e727ddf147d]::boxed::Box<tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::Core>, core[28b146924c2f19c6]::option::Option<()>), <tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::enter<<tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[28b146924c2f19c6]::pin::Pin<&mut core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>>::{closure#0}, core[28b146924c2f19c6]::option::Option<()>>::{closure#0}>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.2/src/runtime/context.rs:181:17
[INFO] [stdout]   34:     0x64bdc58271d0 - <tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::enter::<<tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::block_on<core[28b146924c2f19c6]::pin::Pin<&mut core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>>::{closure#0}, core[28b146924c2f19c6]::option::Option<()>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.2/src/runtime/scheduler/current_thread/mod.rs:865:27
[INFO] [stdout]   35:     0x64bdc5827f06 - <tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CoreGuard>::block_on::<core[28b146924c2f19c6]::pin::Pin<&mut core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.2/src/runtime/scheduler/current_thread/mod.rs:765:24
[INFO] [stdout]   36:     0x64bdc5890b60 - <tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CurrentThread>::block_on::<core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.2/src/runtime/scheduler/current_thread/mod.rs:205:33
[INFO] [stdout]   37:     0x64bdc570ee63 - tokio[752ee1c8eb6d9c19]::runtime::context::runtime::enter_runtime::<<tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CurrentThread>::block_on<core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>::{closure#0}, ()>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.2/src/runtime/context/runtime.rs:65:16
[INFO] [stdout]   38:     0x64bdc5818f21 - <tokio[752ee1c8eb6d9c19]::runtime::scheduler::current_thread::CurrentThread>::block_on::<core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.2/src/runtime/scheduler/current_thread/mod.rs:193:9
[INFO] [stdout]   39:     0x64bdc4bae584 - <tokio[752ee1c8eb6d9c19]::runtime::runtime::Runtime>::block_on_inner::<core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.2/src/runtime/runtime.rs:371:52
[INFO] [stdout]   40:     0x64bdc4baeb4f - <tokio[752ee1c8eb6d9c19]::runtime::runtime::Runtime>::block_on::<core[28b146924c2f19c6]::pin::Pin<&mut dyn core[28b146924c2f19c6]::future::future::Future<Output = ()>>>
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.2/src/runtime/runtime.rs:345:18
[INFO] [stdout]   41:     0x64bdc4f5a25e - ralph[19f1293eae3f54b3]::executor::tests::test_graceful_shutdown_kills_sigterm_resistant_descendant
[INFO] [stdout]                                at /opt/rustwide/workdir/src/executor.rs:7014:10
[INFO] [stdout]   42:     0x64bdc4e99007 - ralph[19f1293eae3f54b3]::executor::tests::test_graceful_shutdown_kills_sigterm_resistant_descendant::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/executor.rs:6859:73
[INFO] [stdout]   43:     0x64bdc58c5fe6 - <ralph[19f1293eae3f54b3]::executor::tests::test_graceful_shutdown_kills_sigterm_resistant_descendant::{closure#0} as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   44:     0x64bdc592992b - <fn() -> core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String> as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   45:     0x64bdc592992b - test[6ec0502068880816]::__rust_begin_short_backtrace::<core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>, fn() -> core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:724:18
[INFO] [stdout]   46:     0x64bdc59371a5 - test[6ec0502068880816]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:747:74
[INFO] [stdout]   47:     0x64bdc59371a5 - <core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<test[6ec0502068880816]::run_test_in_process::{closure#0}> as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   48:     0x64bdc59371a5 - std[929523f510218772]::panicking::catch_unwind::do_call::<core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<test[6ec0502068880816]::run_test_in_process::{closure#0}>, core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:581:40
[INFO] [stdout]   49:     0x64bdc59371a5 - std[929523f510218772]::panicking::catch_unwind::<core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>, core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<test[6ec0502068880816]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:544:19
[INFO] [stdout]   50:     0x64bdc59371a5 - std[929523f510218772]::panic::catch_unwind::<core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<test[6ec0502068880816]::run_test_in_process::{closure#0}>, core[28b146924c2f19c6]::result::Result<(), alloc[95e62e727ddf147d]::string::String>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panic.rs:359:14
[INFO] [stdout]   51:     0x64bdc59371a5 - test[6ec0502068880816]::run_test_in_process
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:747:27
[INFO] [stdout]   52:     0x64bdc59371a5 - test[6ec0502068880816]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:668:43
[INFO] [stdout]   53:     0x64bdc5931d04 - test[6ec0502068880816]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/test/src/lib.rs:698:41
[INFO] [stdout]   54:     0x64bdc5931d04 - std[929523f510218772]::sys::backtrace::__rust_begin_short_backtrace::<test[6ec0502068880816]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   55:     0x64bdc593a222 - std[929523f510218772]::thread::lifecycle::spawn_unchecked::<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   56:     0x64bdc593a222 - <core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   57:     0x64bdc593a222 - std[929523f510218772]::panicking::catch_unwind::do_call::<core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:581:40
[INFO] [stdout]   58:     0x64bdc593a222 - std[929523f510218772]::panicking::catch_unwind::<(), core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panicking.rs:544:19
[INFO] [stdout]   59:     0x64bdc593a222 - std[929523f510218772]::panic::catch_unwind::<core[28b146924c2f19c6]::panic::unwind_safe::AssertUnwindSafe<std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/panic.rs:359:14
[INFO] [stdout]   60:     0x64bdc593a222 - std[929523f510218772]::thread::lifecycle::spawn_unchecked::<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   61:     0x64bdc593a222 - <std[929523f510218772]::thread::lifecycle::spawn_unchecked<test[6ec0502068880816]::run_test::{closure#1}, ()>::{closure#1} as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   62:     0x64bdc5d88bdf - <alloc[95e62e727ddf147d]::boxed::Box<dyn core[28b146924c2f19c6]::ops::function::FnOnce<(), Output = ()> + core[28b146924c2f19c6]::marker::Send> as core[28b146924c2f19c6]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/alloc/src/boxed.rs:2277:9
[INFO] [stdout]   63:     0x64bdc5d88bdf - <std[929523f510218772]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/cced03bfd61a304243a34504618ecec86c17063f/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   64:     0x7661bfe3caa4 - <unknown>
[INFO] [stdout]   65:     0x7661bfec9a64 - clone
[INFO] [stdout]   66:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     executor::tests::test_abort_kills_harness_process_group
[INFO] [stdout]     executor::tests::test_graceful_shutdown_kills_sigterm_resistant_descendant
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 2584 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out; finished in 47.26s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--bin ralph`
[INFO] running `Command { std: "docker" "inspect" "78b3a5c98bf8fe2a06342f473626425072dcf7227026111e19cccc9aa11aadf8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "78b3a5c98bf8fe2a06342f473626425072dcf7227026111e19cccc9aa11aadf8", kill_on_drop: false }`
[INFO] [stdout] 78b3a5c98bf8fe2a06342f473626425072dcf7227026111e19cccc9aa11aadf8
